forked from FreeTDS/freetds
- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcspublic.h
841 lines (767 loc) · 23.9 KB
/
cspublic.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
/* FreeTDS - Library of routines accessing Sybase and Microsoft databases
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Brian Bruns
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef_cspublic_h_
#define_cspublic_h_
#include<cstypes.h>
#undef TDS_STATIC_CAST
#ifdef__cplusplus
#defineTDS_STATIC_CAST(type, a) static_cast<type>(a)
extern"C"
{
#if0
}
#endif
#else
#defineTDS_STATIC_CAST(type, a) ((type)(a))
#endif
#defineCS_PUBLIC
#defineCS_STATIC static
#defineCS_SUCCEED 1
#defineCS_FAIL 0
#defineCS_MEM_ERROR -1
#defineCS_PENDING -2
#defineCS_QUIET -3
#defineCS_BUSY -4
#defineCS_INTERRUPT -5
#defineCS_BLK_HAS_TEXT -6
#defineCS_CONTINUE -7
#defineCS_FATAL -8
#defineCS_RET_HAFAILOVER -9
#defineCS_UNSUPPORTED -10
#defineCS_CANCELED -202
#defineCS_ROW_FAIL -203
#defineCS_END_DATA -204
#defineCS_END_RESULTS -205
#defineCS_END_ITEM -206
#defineCS_NOMSG -207
#defineCS_TIMED_OUT -208
#defineCS_SIZEOF(x) sizeof(x)
#defineCS_LAYER(x) (((x) >> 24) & 0xFF)
#defineCS_ORIGIN(x) (((x) >> 16) & 0xFF)
#defineCS_SEVERITY(x) (((x) >> 8) & 0xFF)
#defineCS_NUMBER(x) ((x) & 0xFF)
/* forward declarations */
typedefCS_RETCODE(*CS_CSLIBMSG_FUNC) (CS_CONTEXT*, CS_CLIENTMSG*);
typedefCS_RETCODE(*CS_CLIENTMSG_FUNC) (CS_CONTEXT*, CS_CONNECTION*, CS_CLIENTMSG*);
typedefCS_RETCODE(*CS_SERVERMSG_FUNC) (CS_CONTEXT*, CS_CONNECTION*, CS_SERVERMSG*);
typedefCS_RETCODE(*CS_INTERRUPT_FUNC) (CS_CONNECTION*);
#defineCS_IODATA TDS_STATIC_CAST(CS_INT, 1600)
#defineCS_SRC_VALUE -2562
/* status bits for CS_SERVERMSG */
#defineCS_HASEED 0x01
typedefstruct_cs_blkdescCS_BLKDESC;
/* CS_CAP_REQUEST values */
#defineCS_REQ_LANG 1
#defineCS_REQ_RPC 2
#defineCS_REQ_NOTIF 3
#defineCS_REQ_MSTMT 4
#defineCS_REQ_BCP 5
#defineCS_REQ_CURSOR 6
#defineCS_REQ_DYN 7
#defineCS_REQ_MSG 8
#defineCS_REQ_PARAM 9
#defineCS_DATA_INT1 10
#defineCS_DATA_INT2 11
#defineCS_DATA_INT4 12
#defineCS_DATA_BIT 13
#defineCS_DATA_CHAR 14
#defineCS_DATA_VCHAR 15
#defineCS_DATA_BIN 16
#defineCS_DATA_VBIN 17
#defineCS_DATA_MNY8 18
#defineCS_DATA_MNY4 19
#defineCS_DATA_DATE8 20
#defineCS_DATA_DATE4 21
#defineCS_DATA_FLT4 22
#defineCS_DATA_FLT8 23
#defineCS_DATA_NUM 24
#defineCS_DATA_TEXT 25
#defineCS_DATA_IMAGE 26
#defineCS_DATA_DEC 27
#defineCS_DATA_LCHAR 28
#defineCS_DATA_LBIN 29
#defineCS_DATA_INTN 30
#defineCS_DATA_DATETIMEN 31
#defineCS_DATA_MONEYN 32
#defineCS_CSR_PREV 33
#defineCS_CSR_FIRST 34
#defineCS_CSR_LAST 35
#defineCS_CSR_ABS 36
#defineCS_CSR_REL 37
#defineCS_CSR_MULTI 38
#defineCS_CON_OOB 39
#defineCS_CON_INBAND 40
#defineCS_CON_LOGICAL 41
#defineCS_PROTO_TEXT 42
#defineCS_PROTO_BULK 43
#defineCS_REQ_URGNOTIF 44
#defineCS_DATA_SENSITIVITY 45
#defineCS_DATA_BOUNDARY 46
#defineCS_PROTO_DYNAMIC 47
#defineCS_PROTO_DYNPROC 48
#defineCS_DATA_FLTN 49
#defineCS_DATA_BITN 50
#defineCS_OPTION_GET 51
#defineCS_DATA_INT8 52
#defineCS_DATA_VOID 53
/* CS_CAP_RESPONSE values */
#defineCS_RES_NOMSG 1
#defineCS_RES_NOEED 2
#defineCS_RES_NOPARAM 3
#defineCS_DATA_NOINT1 4
#defineCS_DATA_NOINT2 5
#defineCS_DATA_NOINT4 6
#defineCS_DATA_NOBIT 7
#defineCS_DATA_NOCHAR 8
#defineCS_DATA_NOVCHAR 9
#defineCS_DATA_NOBIN 10
#defineCS_DATA_NOVBIN 11
#defineCS_DATA_NOMNY8 12
#defineCS_DATA_NOMNY4 13
#defineCS_DATA_NODATE8 14
#defineCS_DATA_NODATE4 15
#defineCS_DATA_NOFLT4 16
#defineCS_DATA_NOFLT8 17
#defineCS_DATA_NONUM 18
#defineCS_DATA_NOTEXT 19
#defineCS_DATA_NOIMAGE 20
#defineCS_DATA_NODEC 21
#defineCS_DATA_NOLCHAR 22
#defineCS_DATA_NOLBIN 23
#defineCS_DATA_NOINTN 24
#defineCS_DATA_NODATETIMEN 25
#defineCS_DATA_NOMONEYN 26
#defineCS_CON_NOOOB 27
#defineCS_CON_NOINBAND 28
#defineCS_PROTO_NOTEXT 29
#defineCS_PROTO_NOBULK 30
#defineCS_DATA_NOSENSITIVITY 31
#defineCS_DATA_NOBOUNDARY 32
#defineCS_RES_NOTDSDEBUG 33
#defineCS_RES_NOSTRIPBLANKS 34
#defineCS_DATA_NOINT8 35
/* Properties */
enum
{
/*
* These defines looks weird but programs can test support for defines,
* compiler can check enum and there are no define side effecs
*/
CS_USERNAME=9100,
#define CS_USERNAME CS_USERNAME
CS_PASSWORD=9101,
#define CS_PASSWORD CS_PASSWORD
CS_APPNAME=9102,
#define CS_APPNAME CS_APPNAME
CS_HOSTNAME=9103,
#define CS_HOSTNAME CS_HOSTNAME
CS_LOGIN_STATUS=9104,
#define CS_LOGIN_STATUS CS_LOGIN_STATUS
CS_TDS_VERSION=9105,
#define CS_TDS_VERSION CS_TDS_VERSION
CS_CHARSETCNV=9106,
#define CS_CHARSETCNV CS_CHARSETCNV
CS_PACKETSIZE=9107,
#define CS_PACKETSIZE CS_PACKETSIZE
CS_USERDATA=9108,
#define CS_USERDATA CS_USERDATA
CS_NETIO=9110,
#define CS_NETIO CS_NETIO
CS_TEXTLIMIT=9112,
#define CS_TEXTLIMIT CS_TEXTLIMIT
CS_HIDDEN_KEYS=9113,
#define CS_HIDDEN_KEYS CS_HIDDEN_KEYS
CS_VERSION=9114,
#define CS_VERSION CS_VERSION
CS_IFILE=9115,
#define CS_IFILE CS_IFILE
CS_LOGIN_TIMEOUT=9116,
#define CS_LOGIN_TIMEOUT CS_LOGIN_TIMEOUT
CS_TIMEOUT=9117,
#define CS_TIMEOUT CS_TIMEOUT
CS_MAX_CONNECT=9118,
#define CS_MAX_CONNECT CS_MAX_CONNECT
CS_EXPOSE_FMTS=9120,
#define CS_EXPOSE_FMTS CS_EXPOSE_FMTS
CS_EXTRA_INF=9121,
#define CS_EXTRA_INF CS_EXTRA_INF
CS_ANSI_BINDS=9123,
#define CS_ANSI_BINDS CS_ANSI_BINDS
CS_BULK_LOGIN=9124,
#define CS_BULK_LOGIN CS_BULK_LOGIN
CS_LOC_PROP=9125,
#define CS_LOC_PROP CS_LOC_PROP
CS_PARENT_HANDLE=9130,
#define CS_PARENT_HANDLE CS_PARENT_HANDLE
CS_EED_CMD=9131,
#define CS_EED_CMD CS_EED_CMD
CS_DIAG_TIMEOUT=9132,
#define CS_DIAG_TIMEOUT CS_DIAG_TIMEOUT
CS_DISABLE_POLL=9133,
#define CS_DISABLE_POLL CS_DISABLE_POLL
CS_SEC_ENCRYPTION=9135,
#define CS_SEC_ENCRYPTION CS_SEC_ENCRYPTION
CS_SEC_CHALLENGE=9136,
#define CS_SEC_CHALLENGE CS_SEC_CHALLENGE
CS_SEC_NEGOTIATE=9137,
#define CS_SEC_NEGOTIATE CS_SEC_NEGOTIATE
CS_ENDPOINT=9141,
#define CS_ENDPOINT CS_ENDPOINT
CS_CON_STATUS=9143,
#define CS_CON_STATUS CS_CON_STATUS
CS_VER_STRING=9144,
#define CS_VER_STRING CS_VER_STRING
CS_SERVERNAME=9146,
#define CS_SERVERNAME CS_SERVERNAME
CS_SEC_APPDEFINED=9149,
#define CS_SEC_APPDEFINED CS_SEC_APPDEFINED
CS_STICKY_BINDS=9151,
#define CS_STICKY_BINDS CS_STICKY_BINDS
CS_SEC_NETWORKAUTH=9175,
#define CS_SEC_NETWORKAUTH CS_SEC_NETWORKAUTH
CS_SEC_DELEGATION=9176,
#define CS_SEC_DELEGATION CS_SEC_DELEGATION
CS_SEC_MUTUALAUTH=9177,
#define CS_SEC_MUTUALAUTH CS_SEC_MUTUALAUTH
CS_SEC_SERVERPRINCIPAL=9188,
#define CS_SEC_SERVERPRINCIPAL CS_SEC_SERVERPRINCIPAL
CS_SERVERADDR=9206,
#define CS_SERVERADDR CS_SERVERADDR
/* settings from here are FreeTDS extensions */
CS_PORT=9300,
#define CS_PORT CS_PORT
CS_CLIENTCHARSET=9301,
#define CS_CLIENTCHARSET CS_CLIENTCHARSET
CS_DATABASE=9302,
#define CS_DATABASE CS_DATABASE
CS_NOTE_EMPTY_DATA=9303,
#define CS_NOTE_EMPTY_DATA CS_NOTE_EMPTY_DATA
CS_PRODUCT_NAME=9304
#defineCS_PRODUCT_NAMECS_PRODUCT_NAME
};
/* Arbitrary precision math operators */
enum
{
CS_ADD=1,
CS_SUB,
CS_MULT,
CS_DIV
};
enum
{
CS_TDS_AUTO=0,
#define CS_TDS_AUTO CS_TDS_AUTO
CS_TDS_40=7360,
#define CS_TDS_40 CS_TDS_40
CS_TDS_42,
#define CS_TDS_42 CS_TDS_42
CS_TDS_46,
#define CS_TDS_46 CS_TDS_46
CS_TDS_495,
#define CS_TDS_495 CS_TDS_495
CS_TDS_50,
#define CS_TDS_50 CS_TDS_50
CS_TDS_70,
CS_TDS_71,
#define CS_TDS_71 CS_TDS_71
CS_TDS_72,
#define CS_TDS_72 CS_TDS_72
CS_TDS_73,
#define CS_TDS_73 CS_TDS_73
CS_TDS_74,
#define CS_TDS_74 CS_TDS_74
CS_TDS_80,
#define CS_TDS_80 CS_TDS_80
};
/* bit mask values used by CS_DATAFMT.status */
#defineCS_HIDDEN (1 << 0)
#defineCS_KEY (1 << 1)
#defineCS_VERSION_KEY (1 << 2)
#defineCS_NODATA (1 << 3)
#defineCS_UPDATABLE (1 << 4)
#defineCS_CANBENULL (1 << 5)
#defineCS_DESCIN (1 << 6)
#defineCS_DESCOUT (1 << 7)
#defineCS_INPUTVALUE (1 << 8)
#defineCS_UPDATECOL (1 << 9)
#defineCS_RETURN (1 << 10)
#defineCS_TIMESTAMP (1 << 13)
#defineCS_NODEFAULT (1 << 14)
#defineCS_IDENTITY (1 << 15)
/*
* DBD::Sybase compares indicator to CS_NULLDATA so this is -1
* (the documentation states -1)
*/
#defineCS_GOODDATA 0
#defineCS_NULLDATA (-1)
/* CS_CON_STATUS read-only property bit mask values */
#defineCS_CONSTAT_CONNECTED 0x01
#defineCS_CONSTAT_DEAD 0x02
/*
* Code added for CURSOR support
* types accepted by ct_cursor
*/
#defineCS_CURSOR_DECLARE 700
#defineCS_CURSOR_OPEN 701
#defineCS_CURSOR_ROWS 703
#defineCS_CURSOR_UPDATE 704
#defineCS_CURSOR_DELETE 705
#defineCS_CURSOR_CLOSE 706
#defineCS_CURSOR_DEALLOC 707
#defineCS_CURSOR_OPTION 725
#defineCS_FOR_UPDATE TDS_STATIC_CAST(CS_INT, 0x1)
#defineCS_READ_ONLY TDS_STATIC_CAST(CS_INT, 0x2)
#defineCS_RESTORE_OPEN TDS_STATIC_CAST(CS_INT, 0x8)
#defineCS_IMPLICIT_CURSOR TDS_STATIC_CAST(CS_INT, 0x40)
#defineCS_CURSTAT_NONE TDS_STATIC_CAST(CS_INT, 0x0)
#defineCS_CURSTAT_DECLARED TDS_STATIC_CAST(CS_INT, 0x1)
#defineCS_CURSTAT_OPEN TDS_STATIC_CAST(CS_INT, 0x2)
#defineCS_CURSTAT_CLOSED TDS_STATIC_CAST(CS_INT, 0x4)
#defineCS_CURSTAT_RDONLY TDS_STATIC_CAST(CS_INT, 0x8)
#defineCS_CURSTAT_UPDATABLE TDS_STATIC_CAST(CS_INT, 0x10)
#defineCS_CURSTAT_ROWCOUNT TDS_STATIC_CAST(CS_INT, 0x20)
#defineCS_CURSTAT_DEALLOC TDS_STATIC_CAST(CS_INT, 0x40)
#defineCS_CUR_STATUS TDS_STATIC_CAST(CS_INT, 9126)
#defineCS_CUR_ID TDS_STATIC_CAST(CS_INT, 9127)
#defineCS_CUR_NAME TDS_STATIC_CAST(CS_INT, 9128)
#defineCS_CUR_ROWCOUNT TDS_STATIC_CAST(CS_INT, 9129)
/* options accepted by ct_options() */
#defineCS_OPT_DATEFIRST 5001
#defineCS_OPT_TEXTSIZE 5002
#defineCS_OPT_STATS_TIME 5003
#defineCS_OPT_STATS_IO 5004
#defineCS_OPT_ROWCOUNT 5005
#defineCS_OPT_DATEFORMAT 5007
#defineCS_OPT_ISOLATION 5008
#defineCS_OPT_AUTHON 5009
#defineCS_OPT_SHOWPLAN 5013
#defineCS_OPT_NOEXEC 5014
#defineCS_OPT_ARITHIGNORE 5015
#defineCS_OPT_TRUNCIGNORE 5016
#defineCS_OPT_ARITHABORT 5017
#defineCS_OPT_PARSEONLY 5018
#defineCS_OPT_GETDATA 5020
#defineCS_OPT_NOCOUNT 5021
#defineCS_OPT_FORCEPLAN 5023
#defineCS_OPT_FORMATONLY 5024
#defineCS_OPT_CHAINXACTS 5025
#defineCS_OPT_CURCLOSEONXACT 5026
#defineCS_OPT_FIPSFLAG 5027
#defineCS_OPT_RESTREES 5028
#defineCS_OPT_IDENTITYON 5029
#defineCS_OPT_CURREAD 5030
#defineCS_OPT_CURWRITE 5031
#defineCS_OPT_IDENTITYOFF 5032
#defineCS_OPT_AUTHOFF 5033
#defineCS_OPT_ANSINULL 5034
#defineCS_OPT_QUOTED_IDENT 5035
#defineCS_OPT_ANSIPERM 5036
#defineCS_OPT_STR_RTRUNC 5037
/* options accepted by ct_command() */
enumct_command_options
{
CS_MORE=16,
#define CS_MORE CS_MORE
CS_END=32,
#define CS_END CS_END
CS_RECOMPILE=188,
#define CS_RECOMPILE CS_RECOMPILE
CS_NO_RECOMPILE,
#define CS_NO_RECOMPILE CS_NO_RECOMPILE
CS_BULK_INIT,
#define CS_BULK_INIT CS_BULK_INIT
CS_BULK_CONT,
#define CS_BULK_CONT CS_BULK_CONT
CS_BULK_DATA,
#define CS_BULK_DATA CS_BULK_DATA
CS_COLUMN_DATA
#defineCS_COLUMN_DATACS_COLUMN_DATA
};
/*
* bind formats, should be mapped to TDS types
* can be a combination of bit
*/
enum
{
CS_FMT_UNUSED=0,
#define CS_FMT_UNUSED CS_FMT_UNUSED
CS_FMT_NULLTERM=1,
#define CS_FMT_NULLTERM CS_FMT_NULLTERM
CS_FMT_PADNULL=2,
#define CS_FMT_PADBLANK CS_FMT_PADBLANK
CS_FMT_PADBLANK=4,
#define CS_FMT_PADNULL CS_FMT_PADNULL
CS_FMT_JUSTIFY_RT=8
#defineCS_FMT_JUSTIFY_RTCS_FMT_JUSTIFY_RT
};
/* callbacks */
#defineCS_COMPLETION_CB 1
#defineCS_SERVERMSG_CB 2
#defineCS_CLIENTMSG_CB 3
#defineCS_NOTIF_CB 4
#defineCS_ENCRYPT_CB 5
#defineCS_CHALLENGE_CB 6
#defineCS_DS_LOOKUP_CB 7
#defineCS_SECSESSION_CB 8
#defineCS_SIGNAL_CB 100
#defineCS_MESSAGE_CB 9119
#defineCS_INTERRUPT_CB 9400
/* string types */
#defineCS_NULLTERM -9
#defineCS_WILDCARD -99
#defineCS_NO_LIMIT -9999
#defineCS_UNUSED -99999
/* other */
#defineCS_GET 33
#defineCS_SET 34
#defineCS_CLEAR 35
#defineCS_INIT 36
#defineCS_STATUS 37
#defineCS_MSGLIMIT 38
#defineCS_SUPPORTED 40
#defineCS_CMD_DONE 4046
#defineCS_CMD_SUCCEED 4047
#defineCS_CMD_FAIL 4048
/* commands */
#defineCS_LANG_CMD 148
#defineCS_RPC_CMD 149
#defineCS_SEND_DATA_CMD 151
#defineCS_SEND_BULK_CMD 153
#ifdefCS_NO_LARGE_IDENTIFIERS
#defineCS_VERSION_100 112
#defineCS_VERSION_110 1100
#defineCS_VERSION_120 1100
#defineCS_VERSION_125 12500
#defineCS_VERSION_150 15000
#else
#defineCS_VERSION_100 113
#defineCS_VERSION_110 1101
#defineCS_VERSION_120 CS_VERSION_110
#defineCS_VERSION_125 12501
#defineCS_VERSION_150 15001
#defineCS_VERSION_155 15501
#defineCS_VERSION_157 15701
#defineCS_VERSION_160 16001
#endif
#defineBLK_VERSION_100 CS_VERSION_100
#defineBLK_VERSION_110 CS_VERSION_110
#defineBLK_VERSION_120 CS_VERSION_120
#defineBLK_VERSION_125 CS_VERSION_125
#defineBLK_VERSION_150 CS_VERSION_150
#ifndefCS_NO_LARGE_IDENTIFIERS
#defineBLK_VERSION_155 CS_VERSION_155
#defineBLK_VERSION_157 CS_VERSION_157
#defineBLK_VERSION_160 CS_VERSION_160
#endif
#defineCS_FORCE_EXIT 300
#defineCS_FORCE_CLOSE 301
#defineCS_SYNC_IO 8111
#defineCS_ASYNC_IO 8112
#defineCS_DEFER_IO 8113
#defineCS_CANCEL_CURRENT 6000
#defineCS_CANCEL_ALL 6001
#defineCS_CANCEL_ATTN 6002
#defineCS_ROW_COUNT 800
#defineCS_CMD_NUMBER 801
#defineCS_NUM_COMPUTES 802
#defineCS_NUMDATA 803
#defineCS_NUMORDERCOLS 805
#defineCS_MSGTYPE 806
#defineCS_BROWSE_INFO 807
#defineCS_TRANS_STATE 808
#defineCS_TRAN_UNDEFINED 0
#defineCS_TRAN_IN_PROGRESS 1
#defineCS_TRAN_COMPLETED 2
#defineCS_TRAN_FAIL 3
#defineCS_TRAN_STMT_FAIL 4
#defineCS_COMP_OP 5350
#defineCS_COMP_ID 5351
#defineCS_COMP_COLID 5352
#defineCS_COMP_BYLIST 5353
#defineCS_BYLIST_LEN 5354
#defineCS_NO_COUNT -1
#defineCS_OP_SUM 5370
#defineCS_OP_AVG 5371
#defineCS_OP_COUNT 5372
#defineCS_OP_MIN 5373
#defineCS_OP_MAX 5374
#defineCS_CAP_REQUEST 1
#defineCS_CAP_RESPONSE 2
#defineCS_PREPARE 717
#defineCS_EXECUTE 718
#defineCS_DESCRIBE_INPUT 720
#defineCS_DESCRIBE_OUTPUT 721
#defineCS_DEALLOC 711
#defineCS_LC_ALL 7
#defineCS_SYB_LANG 8
#defineCS_SYB_CHARSET 9
#defineCS_SYB_SORTORDER 10
#defineCS_SYB_COLLATE CS_SYB_SORTORDER
#defineCS_SYB_LANG_CHARSET 11
#defineCS_BLK_IN 1
#defineCS_BLK_OUT 2
#defineCS_BLK_BATCH 1
#defineCS_BLK_ALL 2
#defineCS_BLK_CANCEL 3
/* to do support these */
#defineCS_BLK_ARRAY_MAXLEN 0x1000
#defineCS_DEF_PREC 18
/* Error Severities */
#defineCS_SV_INFORM TDS_STATIC_CAST(CS_INT, 0)
#defineCS_SV_API_FAIL TDS_STATIC_CAST(CS_INT, 1)
#defineCS_SV_RETRY_FAIL TDS_STATIC_CAST(CS_INT, 2)
#defineCS_SV_RESOURCE_FAIL TDS_STATIC_CAST(CS_INT, 3)
#defineCS_SV_CONFIG_FAIL TDS_STATIC_CAST(CS_INT, 4)
#defineCS_SV_COMM_FAIL TDS_STATIC_CAST(CS_INT, 5)
#defineCS_SV_INTERNAL_FAIL TDS_STATIC_CAST(CS_INT, 6)
#defineCS_SV_FATAL TDS_STATIC_CAST(CS_INT, 7)
/* result_types */
#defineCS_ROW_RESULT 4040
#defineCS_CURSOR_RESULT 4041
#defineCS_PARAM_RESULT 4042
#defineCS_STATUS_RESULT 4043
#defineCS_MSG_RESULT 4044
#defineCS_COMPUTE_RESULT 4045
#defineCS_ROWFMT_RESULT 4049
#defineCS_COMPUTEFMT_RESULT 4050
#defineCS_DESCRIBE_RESULT 4051
/* bind types */
#defineCS_ILLEGAL_TYPE TDS_STATIC_CAST(CS_INT, -1)
#defineCS_CHAR_TYPE TDS_STATIC_CAST(CS_INT, 0)
#defineCS_BINARY_TYPE TDS_STATIC_CAST(CS_INT, 1)
#defineCS_LONGCHAR_TYPE TDS_STATIC_CAST(CS_INT, 2)
#defineCS_LONGBINARY_TYPE TDS_STATIC_CAST(CS_INT, 3)
#defineCS_TEXT_TYPE TDS_STATIC_CAST(CS_INT, 4)
#defineCS_IMAGE_TYPE TDS_STATIC_CAST(CS_INT, 5)
#defineCS_TINYINT_TYPE TDS_STATIC_CAST(CS_INT, 6)
#defineCS_SMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 7)
#defineCS_INT_TYPE TDS_STATIC_CAST(CS_INT, 8)
#defineCS_REAL_TYPE TDS_STATIC_CAST(CS_INT, 9)
#defineCS_FLOAT_TYPE TDS_STATIC_CAST(CS_INT, 10)
#defineCS_BIT_TYPE TDS_STATIC_CAST(CS_INT, 11)
#defineCS_DATETIME_TYPE TDS_STATIC_CAST(CS_INT, 12)
#defineCS_DATETIME4_TYPE TDS_STATIC_CAST(CS_INT, 13)
#defineCS_MONEY_TYPE TDS_STATIC_CAST(CS_INT, 14)
#defineCS_MONEY4_TYPE TDS_STATIC_CAST(CS_INT, 15)
#defineCS_NUMERIC_TYPE TDS_STATIC_CAST(CS_INT, 16)
#defineCS_DECIMAL_TYPE TDS_STATIC_CAST(CS_INT, 17)
#defineCS_VARCHAR_TYPE TDS_STATIC_CAST(CS_INT, 18)
#defineCS_VARBINARY_TYPE TDS_STATIC_CAST(CS_INT, 19)
#defineCS_LONG_TYPE TDS_STATIC_CAST(CS_INT, 20)
#defineCS_SENSITIVITY_TYPE TDS_STATIC_CAST(CS_INT, 21)
#defineCS_BOUNDARY_TYPE TDS_STATIC_CAST(CS_INT, 22)
#defineCS_VOID_TYPE TDS_STATIC_CAST(CS_INT, 23)
#defineCS_USHORT_TYPE TDS_STATIC_CAST(CS_INT, 24)
#defineCS_UNICHAR_TYPE TDS_STATIC_CAST(CS_INT, 25)
#defineCS_BLOB_TYPE TDS_STATIC_CAST(CS_INT, 26)
#defineCS_DATE_TYPE TDS_STATIC_CAST(CS_INT, 27)
#defineCS_TIME_TYPE TDS_STATIC_CAST(CS_INT, 28)
#defineCS_UNITEXT_TYPE TDS_STATIC_CAST(CS_INT, 29)
#defineCS_BIGINT_TYPE TDS_STATIC_CAST(CS_INT, 30)
#defineCS_USMALLINT_TYPE TDS_STATIC_CAST(CS_INT, 31)
#defineCS_UINT_TYPE TDS_STATIC_CAST(CS_INT, 32)
#defineCS_UBIGINT_TYPE TDS_STATIC_CAST(CS_INT, 33)
#defineCS_XML_TYPE TDS_STATIC_CAST(CS_INT, 34)
#defineCS_BIGDATETIME_TYPE TDS_STATIC_CAST(CS_INT, 35)
#defineCS_BIGTIME_TYPE TDS_STATIC_CAST(CS_INT, 36)
#defineCS_TEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 37)
#defineCS_IMAGELOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 38)
#defineCS_UNITEXTLOCATOR_TYPE TDS_STATIC_CAST(CS_INT, 39)
#defineCS_UNIQUE_TYPE TDS_STATIC_CAST(CS_INT, 40)
#defineCS_MIN_SYBTYPE CS_CHAR_TYPE
#defineCS_MAX_SYBTYPE CS_UNIQUE_TYPE
#defineCS_USER_TYPE TDS_STATIC_CAST(CS_INT, 100)
/* cs_dt_info type values */
enum
{
CS_MONTH=7340,
#define CS_MONTH CS_MONTH
CS_SHORTMONTH,
#define CS_SHORTMONTH CS_SHORTMONTH
CS_DAYNAME,
#define CS_DAYNAME CS_DAYNAME
CS_DATEORDER,
#define CS_DATEORDER CS_DATEORDER
CS_12HOUR,
#define CS_12HOUR CS_12HOUR
CS_DT_CONVFMT
#defineCS_DT_CONVFMTCS_DT_CONVFMT
};
/* DT_CONVFMT types */
enum
{
CS_DATES_SHORT=0,
#define CS_DATES_SHORT CS_DATES_SHORT
CS_DATES_MDY1,
#define CS_DATES_MDY1 CS_DATES_MDY1
CS_DATES_YMD1,
#define CS_DATES_YMD1 CS_DATES_YMD1
CS_DATES_DMY1,
#define CS_DATES_DMY1 CS_DATES_DMY1
CS_DATES_DMY2,
#define CS_DATES_DMY2 CS_DATES_DMY2
CS_DATES_DMY3,
#define CS_DATES_DMY3 CS_DATES_DMY3
CS_DATES_DMY4,
#define CS_DATES_DMY4 CS_DATES_DMY4
CS_DATES_MDY2,
#define CS_DATES_MDY2 CS_DATES_MDY2
CS_DATES_HMS,
#define CS_DATES_HMS CS_DATES_HMS
CS_DATES_LONG,
#define CS_DATES_LONG CS_DATES_LONG
CS_DATES_MDY3,
#define CS_DATES_MDY3 CS_DATES_MDY3
CS_DATES_YMD2,
#define CS_DATES_YMD2 CS_DATES_YMD2
CS_DATES_YMD3,
#define CS_DATES_YMD3 CS_DATES_YMD3
CS_DATES_YDM1,
#define CS_DATES_YDM1 CS_DATES_YDM1
CS_DATES_MYD1,
#define CS_DATES_MYD1 CS_DATES_MYD1
CS_DATES_DYM1,
#define CS_DATES_DYM1 CS_DATES_DYM1
CS_DATES_MDY1_YYYY=101,
#define CS_DATES_MDY1_YYYY CS_DATES_MDY1_YYYY
CS_DATES_YMD1_YYYY,
#define CS_DATES_YMD1_YYYY CS_DATES_YMD1_YYYY
CS_DATES_DMY1_YYYY,
#define CS_DATES_DMY1_YYYY CS_DATES_DMY1_YYYY
CS_DATES_DMY2_YYYY,
#define CS_DATES_DMY2_YYYY CS_DATES_DMY2_YYYY
CS_DATES_DMY3_YYYY,
#define CS_DATES_DMY3_YYYY CS_DATES_DMY3_YYYY
CS_DATES_DMY4_YYYY,
#define CS_DATES_DMY4_YYYY CS_DATES_DMY4_YYYY
CS_DATES_MDY2_YYYY,
#define CS_DATES_MDY2_YYYY CS_DATES_MDY2_YYYY
CS_DATES_MDY3_YYYY=110,
#define CS_DATES_MDY3_YYYY CS_DATES_MDY3_YYYY
CS_DATES_YMD2_YYYY,
#define CS_DATES_YMD2_YYYY CS_DATES_YMD2_YYYY
CS_DATES_YMD3_YYYY
#defineCS_DATES_YMD3_YYYYCS_DATES_YMD3_YYYY
};
typedefCS_RETCODE(*CS_CONV_FUNC) (CS_CONTEXT*context, CS_DATAFMT*srcfmt, CS_VOID*src, CS_DATAFMT*detsfmt, CS_VOID*dest,
CS_INT*destlen);
typedefstruct_cs_objname
{
CS_BOOLthinkexists;
CS_INTobject_type;
#ifdefCS_NO_LARGE_IDENTIFIERS
CS_CHARlast_name[CS_MAX_NAME];
CS_INTlnlen;
CS_CHARfirst_name[CS_MAX_NAME];
#else
CS_CHARlast_name[CS_MAX_CHAR];
CS_INTlnlen;
CS_CHARfirst_name[CS_MAX_CHAR];
#endif
CS_INTfnlen;
CS_VOID*scope;
CS_INTscopelen;
CS_VOID*thread;
CS_INTthreadlen;
} CS_OBJNAME;
typedefstruct_cs_objdata
{
CS_BOOLactuallyexists;
CS_CONNECTION*connection;
CS_COMMAND*command;
CS_VOID*buffer;
CS_INTbuflen;
} CS_OBJDATA;
/* Eventually, these should be in terms of TDS values */
enum
{
CS_OPT_MONDAY=1,
CS_OPT_TUESDAY,
CS_OPT_WEDNESDAY,
CS_OPT_THURSDAY,
CS_OPT_FRIDAY,
CS_OPT_SATURDAY,
CS_OPT_SUNDAY
};
enum
{
CS_OPT_FMTMDY=1,
CS_OPT_FMTDMY,
CS_OPT_FMTYMD,
CS_OPT_FMTYDM,
CS_OPT_FMTMYD,
CS_OPT_FMTDYM
};
enum
{
CS_OPT_LEVEL0=0,
CS_OPT_LEVEL1,
CS_OPT_LEVEL2,
CS_OPT_LEVEL3
};
#defineCS_FALSE 0
#defineCS_TRUE 1
#defineSRV_PROC CS_VOID
/* constants required for ct_diag (not jet implemented) */
#defineCS_CLIENTMSG_TYPE 4700
#defineCS_SERVERMSG_TYPE 4701
#defineCS_ALLMSG_TYPE 4702
/* CS_INTERRUPT_CB return values */
#defineCS_INT_CONTINUE 1
#defineCS_INT_CANCEL 2
#defineCS_INT_TIMEOUT 3
CS_RETCODEcs_convert(CS_CONTEXT*ctx, CS_DATAFMT*srcfmt, CS_VOID*srcdata, CS_DATAFMT*destfmt, CS_VOID*destdata,
CS_INT*resultlen);
CS_RETCODEcs_ctx_alloc(CS_INTversion, CS_CONTEXT**ctx);
CS_RETCODEcs_ctx_global(CS_INTversion, CS_CONTEXT**ctx);
CS_RETCODEcs_ctx_drop(CS_CONTEXT*ctx);
CS_RETCODEcs_config(CS_CONTEXT*ctx, CS_INTaction, CS_INTproperty, CS_VOID*buffer, CS_INTbuflen, CS_INT*outlen);
CS_RETCODEcs_strbuild(CS_CONTEXT*ctx, CS_CHAR*buffer, CS_INTbuflen, CS_INT*resultlen, CS_CHAR*text, CS_INTtextlen,
CS_CHAR*formats, CS_INTformatlen, ...);
#undef cs_dt_crack
CS_RETCODEcs_dt_crack(CS_CONTEXT*ctx, CS_INTdatetype, CS_VOID*dateval, CS_DATEREC*daterec);
CS_RETCODEcs_dt_crack_v2(CS_CONTEXT*ctx, CS_INTdatetype, CS_VOID*dateval, CS_DATEREC*daterec);
#definecs_dt_crack cs_dt_crack_v2
CS_RETCODEcs_loc_alloc(CS_CONTEXT*ctx, CS_LOCALE**locptr);
CS_RETCODEcs_loc_drop(CS_CONTEXT*ctx, CS_LOCALE*locale);
CS_RETCODEcs_locale(CS_CONTEXT*ctx, CS_INTaction, CS_LOCALE*locale, CS_INTtype, CS_VOID*buffer, CS_INTbuflen,
CS_INT*outlen);
CS_RETCODEcs_dt_info(CS_CONTEXT*ctx, CS_INTaction, CS_LOCALE*locale, CS_INTtype, CS_INTitem, CS_VOID*buffer,
CS_INTbuflen, CS_INT*outlen);
CS_RETCODEcs_calc(CS_CONTEXT*ctx, CS_INTop, CS_INTdatatype, CS_VOID*var1, CS_VOID*var2, CS_VOID*dest);
CS_RETCODEcs_cmp(CS_CONTEXT*ctx, CS_INTdatatype, CS_VOID*var1, CS_VOID*var2, CS_INT*result);
CS_RETCODEcs_conv_mult(CS_CONTEXT*ctx, CS_LOCALE*srcloc, CS_LOCALE*destloc, CS_INT*conv_multiplier);
CS_RETCODEcs_diag(CS_CONTEXT*ctx, CS_INToperation, CS_INTtype, CS_INTidx, CS_VOID*buffer);
CS_RETCODEcs_manage_convert(CS_CONTEXT*ctx, CS_INTaction, CS_INTsrctype, CS_CHAR*srcname, CS_INTsrcnamelen, CS_INTdesttype,
CS_CHAR*destname, CS_INTdestnamelen, CS_INT*conv_multiplier, CS_CONV_FUNC*func);
CS_RETCODEcs_objects(CS_CONTEXT*ctx, CS_INTaction, CS_OBJNAME*objname, CS_OBJDATA*objdata);
CS_RETCODEcs_set_convert(CS_CONTEXT*ctx, CS_INTaction, CS_INTsrctype, CS_INTdesttype, CS_CONV_FUNC*func);
CS_RETCODEcs_setnull(CS_CONTEXT*ctx, CS_DATAFMT*datafmt, CS_VOID*buffer, CS_INTbuflen);
CS_RETCODEcs_strcmp(CS_CONTEXT*ctx, CS_LOCALE*locale, CS_INTtype, CS_CHAR*str1, CS_INTlen1, CS_CHAR*str2, CS_INTlen2,
CS_INT*result);
CS_RETCODEcs_time(CS_CONTEXT*ctx, CS_LOCALE*locale, CS_VOID*buffer, CS_INTbuflen, CS_INT*outlen, CS_DATEREC*daterec);
CS_RETCODEcs_will_convert(CS_CONTEXT*ctx, CS_INTsrctype, CS_INTdesttype, CS_BOOL*result);
constchar*cs_prretcode(intretcode);
#ifdef__cplusplus
#if0
{
#endif
}
#endif
#endif