cspublic.h
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:12k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: cspublic.h,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 20:20:02  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.1
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /* FreeTDS - Library of routines accessing Sybase and Microsoft databases
  10.  * Copyright (C) 1998-1999  Brian Bruns
  11.  *
  12.  * This library is free software; you can redistribute it and/or
  13.  * modify it under the terms of the GNU Library General Public
  14.  * License as published by the Free Software Foundation; either
  15.  * version 2 of the License, or (at your option) any later version.
  16.  *
  17.  * This library is distributed in the hope that it will be useful,
  18.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  20.  * Library General Public License for more details.
  21.  *
  22.  * You should have received a copy of the GNU Library General Public
  23.  * License along with this library; if not, write to the
  24.  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  25.  * Boston, MA 02111-1307, USA.
  26.  */
  27. #ifndef _cspublic_h_
  28. #define _cspublic_h_
  29. #include <tds.h>
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif 
  33. static char  rcsid_cspublic_h [ ] =
  34.          "$Id: cspublic.h,v 1000.0 2003/10/29 20:20:02 gouriano Exp $";
  35. static void *no_unused_cspublic_h_warn[]={rcsid_cspublic_h, no_unused_cspublic_h_warn};
  36. typedef int CS_RETCODE ;
  37. #define CS_PUBLIC 
  38. #define CS_STATIC static
  39. typedef TDS_INT CS_INT;
  40. typedef TDS_SMALLINT CS_SMALLINT;
  41. typedef TDS_TINYINT CS_TINYINT;
  42. typedef TDS_CHAR CS_CHAR;
  43. typedef TDS_UCHAR CS_BYTE;
  44. typedef TDS_NUMERIC CS_NUMERIC;
  45. typedef float CS_REAL;
  46. typedef double CS_FLOAT;
  47. typedef char CS_BOOL;
  48. typedef void CS_VOID;
  49. typedef TDS_VARBINARY CS_VARBINARY;
  50. #define CS_FAIL    TDS_FAIL
  51. #define CS_SUCCEED TDS_SUCCEED
  52. #define CS_SIZEOF(x) sizeof(x)
  53. /* FIX ME */
  54. #define CS_NUMBER(x)   (x & 0xFF)
  55. #define CS_ORIGIN(x)   ((x >>  8) & 0xFF)
  56. #define CS_LAYER(x)    ((x >> 16) & 0xFF)
  57. #define CS_SEVERITY(x) ((x >> 24) & 0xFF)
  58. typedef struct cs_context
  59. {
  60. CS_INT date_convert_fmt;
  61. int (*_clientmsg_cb)(void*, void*, void*);
  62. int (*_servermsg_cb)(void*, void*, void*);
  63. TDSCONTEXT *tds_ctx;
  64. } CS_CONTEXT;
  65. typedef struct cs_locale {
  66. char *language;
  67. char *charset;
  68. char *time;
  69. char *collate;
  70. } CS_LOCALE;
  71. typedef struct cs_connection
  72. {
  73. CS_CONTEXT *ctx;
  74. void *tds_login;
  75. TDSSOCKET *tds_socket;
  76. int (*_clientmsg_cb)(void*, void*, void*);
  77. int (*_servermsg_cb)(void*, void*, void*);
  78. void *userdata;
  79. int userdata_len;
  80. CS_LOCALE *locale;
  81. } CS_CONNECTION;
  82. typedef struct cs_command
  83. {
  84. CS_CHAR *query;
  85. int cmd_done;
  86. CS_CONNECTION *con;
  87. void *userdata;
  88. int userdata_len;
  89. short empty_res_hack;
  90. short dynamic_cmd;
  91. char  *dyn_id; 
  92. } CS_COMMAND;
  93. #define CS_MAX_MSG 1024
  94. #define CS_MAX_NAME 132
  95. #define CS_MAX_PREC 77  /* used by php */
  96. #define CS_OBJ_NAME 132 /* ? */
  97. #define CS_TP_SIZE  16  /* ? */
  98. #define CS_TS_SIZE  16  /* ? */
  99. #define CS_SRC_VALUE   -999
  100. typedef struct cs_datafmt {
  101. int datatype;
  102. int format;
  103. int maxlength;
  104. int count;
  105. CS_LOCALE *locale;
  106. int precision;
  107. int scale;
  108. int namelen;
  109. char name[CS_MAX_NAME];
  110. int status;
  111. int usertype;
  112. } CS_DATAFMT;
  113. typedef TDS_MONEY  CS_MONEY;
  114. typedef TDS_MONEY4 CS_MONEY4;
  115. typedef TDS_DATETIME CS_DATETIME;
  116. typedef TDS_DATETIME4 CS_DATETIME4;
  117. typedef struct cs_daterec {
  118. CS_INT datesecond;
  119. CS_INT dateminute;
  120. CS_INT datehour;
  121. CS_INT datedmonth;
  122. CS_INT datedyear;
  123. CS_INT datemonth;
  124. CS_INT dateyear;
  125. CS_INT dateweek;
  126. CS_INT datedweek;
  127. CS_INT datemsecond;
  128. CS_INT datetzone;
  129. } CS_DATEREC;
  130. typedef struct cs_clientmsg {
  131. int severity;
  132. int msgnumber;
  133. char msgstring[CS_MAX_MSG];
  134. int msgstringlen;
  135. long osnumber;
  136. int osstringlen;
  137. char osstring[CS_MAX_MSG]; 
  138. } CS_CLIENTMSG;
  139. typedef struct cs_servermsg {
  140. int severity;
  141. int msgnumber;
  142. int state;
  143. int line;
  144. int svrnlen;
  145. char svrname[CS_MAX_NAME];
  146. int proclen;
  147. char proc[CS_MAX_NAME];
  148. char text[CS_MAX_MSG];
  149. int status;
  150. } CS_SERVERMSG;
  151. /* status bits for CS_SERVERMSG */
  152. #define CS_HASEED 0x01
  153. typedef struct cs_blkdesc {
  154. int dummy;
  155. } CS_BLKDESC;
  156. typedef struct cs_iodesc {
  157. CS_INT iotype;
  158. CS_INT datatype;
  159. CS_LOCALE *locale;
  160. CS_INT usertype;
  161. CS_INT total_txtlen;
  162. CS_INT offset;
  163. CS_BOOL log_on_update;
  164. CS_CHAR name[CS_OBJ_NAME];
  165. CS_INT namelen;
  166. CS_BYTE textptr[CS_TP_SIZE];
  167. CS_INT textptrlen;
  168. CS_BYTE timestamp[CS_TS_SIZE];
  169. CS_INT timestamplen;
  170. } CS_IODESC;
  171. /* CS_CAP_REQUEST values */
  172. #define CS_CON_INBAND 1
  173. #define CS_CON_OOB 2
  174. #define CS_CSR_ABS 3
  175. #define CS_CSR_FIRST 4
  176. #define CS_CSR_LAST 5
  177. #define CS_CSR_MULTI 6
  178. #define CS_CSR_PREV 7
  179. #define CS_CSR_REL 8
  180. #define CS_DATA_BIN 9
  181. #define CS_DATA_VBIN 10
  182. #define CS_DATA_LBIN 11
  183. #define CS_DATA_BIT 12
  184. #define CS_DATA_BITN 13
  185. #define CS_DATA_BOUNDARY 14
  186. #define CS_DATA_CHAR 15
  187. #define CS_DATA_VCHAR 16
  188. #define CS_DATA_LCHAR 17
  189. #define CS_DATA_DATE4 18
  190. #define CS_DATA_DATE8 19
  191. #define CS_DATA_DATETIMEN 20
  192. #define CS_DATA_DEC 21
  193. #define CS_DATA_FLT4 22
  194. #define CS_DATA_FLT8 23
  195. #define CS_DATA_FLTN 24
  196. #define CS_DATA_IMAGE 25
  197. #define CS_DATA_INT1 26
  198. #define CS_DATA_INT2 27
  199. #define CS_DATA_INT4 28
  200. #define CS_DATA_INTN 29
  201. #define CS_DATA_MNY4 30
  202. #define CS_DATA_MNY8 31
  203. #define CS_DATA_MONEYN 32
  204. #define CS_DATA_NUM 33
  205. #define CS_DATA_SENSITIVITY 34
  206. #define CS_DATA_TEXT 35
  207. #define CS_OPTION_GET 36
  208. #define CS_PROTO_BULK 37
  209. #define CS_PROTO_DYNAMIC 38
  210. #define CS_PROTO_DYNPROC 39
  211. #define CS_REQ_BCP 40
  212. #define CS_REQ_CURSOR 41
  213. #define CS_REQ_DYN 42
  214. #define CS_REQ_LANG 43
  215. #define CS_REQ_MSG 44
  216. #define CS_REQ_MSTMT 45
  217. #define CS_REQ_NOTIF 46
  218. #define CS_REQ_PARAM 47
  219. #define CS_REQ_URGNOTIF 48
  220. #define CS_REQ_RPC 49
  221. #define CS_DATA_INT8 50
  222. #define CS_DATA_VOID 51
  223. #define CS_CON_LOGICAL 52
  224. #define CS_PROTO_TEXT 53
  225. /* CS_CAP_RESPONSE values */
  226. #define CS_DATA_NOBOUNDARY 1
  227. #define CS_DATA_NOTDSDEBUG 2
  228. #define CS_RES_NOSTRIPBLANKS 3
  229. #define CS_DATA_NOINT8 4
  230. #define CS_DATA_NOINTN 5
  231. #define CS_DATA_NODATETIMEN 6
  232. #define CS_DATA_NOMONEYN 7
  233. #define CS_CON_NOOOB 8
  234. #define CS_CON_NOINBAND 9
  235. #define CS_PROTO_NOTEXT 10
  236. #define CS_PROTO_NOBULK 11
  237. #define CS_DATA_NOSENSITIVITY 12
  238. #define CS_DATA_NOFLT4 13
  239. #define CS_DATA_NOFLT8 14
  240. #define CS_DATA_NONUM 15
  241. #define CS_DATA_NOTEXT 16
  242. #define CS_DATA_NOIMAGE 17
  243. #define CS_DATA_NODEC 18
  244. #define CS_DATA_NOLCHAR 19
  245. #define CS_DATA_NOLBIN 20
  246. #define CS_DATA_NOCHAR 21
  247. #define CS_DATA_NOVCHAR 22
  248. #define CS_DATA_NOBIN 23
  249. #define CS_DATA_NOVBIN 24
  250. #define CS_DATA_NOMNY8 25
  251. #define CS_DATA_NOMNY4 26
  252. #define CS_DATA_NODATE8 27
  253. #define CS_DATA_NODATE4 28
  254. #define CS_RES_NOMSG 29
  255. #define CS_RES_NOEED 30
  256. #define CS_RES_NOPARAM 31
  257. #define CS_DATA_NOINT1 32
  258. #define CS_DATA_NOINT2 33
  259. #define CS_DATA_NOINT4 34
  260. #define CS_DATA_NOBIT 35
  261. /* Properties */
  262. enum {
  263. CS_USERNAME = 1,
  264. CS_PASSWORD,
  265. CS_APPNAME,
  266. CS_HOSTNAME,
  267. CS_PACKETSIZE,
  268. CS_SEC_ENCRYPTION,
  269. CS_LOC_PROP,
  270. CS_SEC_CHALLENGE,
  271. CS_SEC_NEGOTIATE,
  272. CS_TDS_VERSION,
  273. CS_NETIO,
  274. CS_IFILE,
  275. CS_USERDATA,
  276. CS_SEC_APPDEFINED,
  277. CS_CHARSETCNV,
  278. CS_ANSI_BINDS,
  279. CS_VER_STRING
  280. };
  281. /* Arbitrary precision math operators */
  282. enum {
  283. CS_ADD = 1,
  284. CS_SUB,
  285. CS_MULT,
  286. CS_DIV
  287. };
  288. enum {
  289. CS_TDS_40 = 1,
  290. CS_TDS_42,
  291. CS_TDS_46,
  292. CS_TDS_495,
  293. CS_TDS_50,
  294. CS_TDS_70
  295. };
  296. /* fields used by CS_DATAFMT.status */
  297. #define CS_CANBENULL   (1)
  298. #define CS_HIDDEN      (1 << 1)
  299. #define CS_IDENTITY    (1 << 2)
  300. #define CS_KEY         (1 << 3)
  301. #define CS_VERSION_KEY (1 << 4)
  302. #define CS_TIMESTAMP   (1 << 5)
  303. #define CS_UPDATABLE   (1 << 6)
  304. /* DBD::Sybase compares indicator to CS_NULLDATA so this is -1
  305. ** (the documentation states -1) */
  306. #define CS_NULLDATA (-1)
  307. /* CS_CON_STATUS read-only property bit mask values */
  308. #define CS_CONSTAT_CONNECTED 0x01
  309. #define CS_CONSTAT_DEAD  0x02
  310. /* options accepted by ct_options() */
  311. #define CS_OPT_ANSINULL 1
  312. #define CS_OPT_ANSIPERM 2
  313. #define CS_OPT_ARITHABORT 3
  314. #define CS_OPT_ARITHIGNORE 4
  315. #define CS_OPT_AUTHOFF 5
  316. #define CS_OPT_AUTHON 6
  317. #define CS_OPT_CHAINXACTS 7
  318. #define CS_OPT_CURCLOSEONXACT 8
  319. #define CS_OPT_CURREAD 9
  320. #define CS_OPT_CURWRITE 10
  321. #define CS_OPT_DATEFIRST 11
  322. #define CS_OPT_DATEFORMAT 12
  323. #define CS_OPT_FIPSFLAG 13
  324. #define CS_OPT_FORCEPLAN 14
  325. #define CS_OPT_FORMATONLY 15
  326. #define CS_OPT_GETDATA 16
  327. #define CS_OPT_IDENTITYOFF 17
  328. #define CS_OPT_IDENTITYON 18
  329. #define CS_OPT_ISOLATION 19
  330. #define CS_OPT_NOCOUNT 20
  331. #define CS_OPT_NOEXEC 21
  332. #define CS_OPT_PARSEONLY 22
  333. #define CS_OPT_QUOTED_IDENT 23
  334. #define CS_OPT_RESTREES 24
  335. #define CS_OPT_ROWCOUNT 25
  336. #define CS_OPT_SHOWPLAN 26
  337. #define CS_OPT_STATS_IO 27
  338. #define CS_OPT_STATS_TIME 28
  339. #define CS_OPT_STR_RTRUNC 29
  340. #define CS_OPT_TEXTSIZE 30
  341. #define CS_OPT_TRUNCIGNORE 31
  342. /* bind formats, should be mapped to TDS types */
  343. enum {
  344. CS_FMT_UNUSED = 0,
  345. CS_FMT_NULLTERM,
  346. CS_FMT_PADBLANK,
  347. CS_FMT_PADNULL
  348. };
  349. /* other */
  350. #define CS_NULLTERM 2
  351. #define CS_SET 4
  352. #define CS_UNUSED 5
  353. #define CS_LANG_CMD 7
  354. #define CS_ROW_FAIL 9
  355. #define CS_END_DATA 10
  356. #define CS_CMD_SUCCEED 12
  357. #define CS_CMD_FAIL 13
  358. #define CS_CMD_DONE 14
  359. #define CS_END_RESULTS 15
  360. #define CS_VERSION_100 16
  361. #define CS_FORCE_EXIT 17
  362. #define CS_MESSAGE_CB 18
  363. #define CS_CLIENTMSG_CB 19
  364. #define CS_SERVERMSG_CB 20
  365. #define CS_NOTIF_CB 21
  366. #define CS_GET 25
  367. #define CS_CON_STATUS 26
  368. #define CS_FORCE_CLOSE 27
  369. #define CS_SYNC_IO 29
  370. #define CS_LC_ALL 37
  371. #define CS_SYB_LANG 38
  372. #define CS_SYB_CHARSET 39
  373. #define CS_SV_COMM_FAIL 41
  374. #define CS_BULK_LOGIN 42
  375. #define BLK_VERSION_100 CS_VERSION_100
  376. #define CS_BLK_IN 43
  377. #define CS_BLK_OUT 44
  378. #define CS_BLK_BATCH 45
  379. #define CS_BLK_ALL 46
  380. #define CS_BLK_CANCEL 47
  381. #define CS_CANCEL_ALL 48
  382. #define CS_NUMDATA 49
  383. #define CS_CANCEL_ATTN 50
  384. #define CS_PARENT_HANDLE 51
  385. #define CS_COMP_ID 52
  386. #define CS_BYLIST_LEN 53
  387. #define CS_COMP_BYLIST 54
  388. #define CS_COMP_OP 55
  389. #define CS_COMP_COLID 56
  390. #define CS_NO_COUNT 57
  391. #define CS_ROW_COUNT 59
  392. #define CS_OP_SUM 60
  393. #define CS_OP_AVG 61
  394. #define CS_OP_MIN 62
  395. #define CS_OP_MAX 63
  396. #define CS_OP_COUNT 64
  397. #define CS_CANCEL_CURRENT 67
  398. #define CS_CAPREQUEST 73
  399. #define CS_NO_LIMIT 74
  400. #define CS_EED_CMD 77
  401. #define CS_LOGIN_TIMEOUT 78
  402. #define CS_CAP_REQUEST 79
  403. #define CS_DESCRIBE_INPUT 80
  404. #define CS_PREPARE 81
  405. #define CS_EXECUTE 82
  406. #define CS_DEALLOC 83
  407. #define CS_CAP_RESPONSE 84
  408. #define CS_RPC_CMD 85
  409. #define CS_INPUTVALUE 86
  410. #define CS_GOODDATA 87
  411. #define CS_RETURN 88
  412. #define CS_CMD_NUMBER 89
  413. #define CS_BROWSE_INFO 90
  414. #define CS_NUMORDERCOLS 91
  415. #define CS_NUM_COMPUTES 92
  416. #define CS_NODATA 96
  417. #define CS_DESCIN 98
  418. #define CS_DESCOUT 99
  419. #define CS_UPDATECOL 100
  420. #define CS_NODEFAULT 102
  421. #define CS_FMT_JUSTIFY_RT 106
  422. #define CS_TRANS_STATE 107
  423. #define CS_TRAN_IN_PROGRESS 108
  424. #define CS_TRAN_COMPLETED 109
  425. #define CS_TRAN_STMT_FAIL 110
  426. #define CS_TRAN_FAIL 111
  427. #define CS_TRAN_UNDEFINED 112
  428. #define CS_SV_RETRY_FAIL 114
  429. #define CS_TIMEOUT 115
  430. #define CS_CANCELED  116
  431. #define CS_NO_RECOMPILE 117
  432. #define CS_COLUMN_DATA 118
  433. #define CS_SEND_DATA_CMD 119
  434. /* result_types */
  435. #define CS_COMPUTE_RESULT 1
  436. #define CS_CURSOR_RESULT 2
  437. #define CS_PARAM_RESULT 3
  438. #define CS_ROW_RESULT 4
  439. #define CS_STATUS_RESULT 5
  440. #define CS_COMPUTEFMT_RESULT 6
  441. #define CS_ROWFMT_RESULT 7
  442. #define CS_MSG_RESULT 8
  443. #define CS_DESCRIBE_RESULT 9
  444. /* bind types */
  445. #define CS_CHAR_TYPE 1
  446. #define CS_INT_TYPE 2
  447. #define CS_SMALLINT_TYPE 3
  448. #define CS_TINYINT_TYPE 4
  449. #define CS_MONEY_TYPE 5
  450. #define CS_DATETIME_TYPE 6
  451. #define CS_NUMERIC_TYPE 7
  452. #define CS_DECIMAL_TYPE 8
  453. #define CS_DATETIME4_TYPE 9
  454. #define CS_MONEY4_TYPE 10
  455. #define CS_IMAGE_TYPE 11
  456. #define CS_BINARY_TYPE 12
  457. #define CS_BIT_TYPE 13
  458. #define CS_REAL_TYPE 14
  459. #define CS_FLOAT_TYPE 15
  460. #define CS_TEXT_TYPE 16
  461. #define CS_VARCHAR_TYPE 17
  462. #define CS_VARBINARY_TYPE 18
  463. #define CS_LONGCHAR_TYPE 19
  464. #define CS_LONGBINARY_TYPE 20
  465. #define CS_LONG_TYPE 21
  466. #define CS_ILLEGAL_TYPE 22
  467. #define CS_SENSITIVITY_TYPE 23
  468. #define CS_BOUNDARY_TYPE 24
  469. #define CS_VOID_TYPE 25
  470. #define CS_USHORT_TYPE 26
  471. #define CS_UNIQUE_TYPE 27
  472. /* cs_dt_info type values */
  473. enum {
  474. CS_MONTH = 1,
  475. CS_SHORTMONTH,
  476. CS_DAYNAME,
  477. CS_DATEORDER,
  478. CS_12HOUR,
  479. CS_DT_CONVFMT
  480. };
  481. /* DT_CONVFMT types */
  482. enum {
  483. CS_DATES_HMS = 1,
  484. CS_DATES_SHORT,
  485. CS_DATES_LONG,
  486. CS_DATES_MDY1,
  487. CS_DATES_MYD1,
  488. CS_DATES_DMY1,
  489. CS_DATES_DYM1,
  490. CS_DATES_YDM1,
  491. CS_DATES_YMD2,
  492. CS_DATES_MDY1_YYYY,
  493. CS_DATES_DMY1_YYYY,
  494. CS_DATES_YMD2_YYYY,
  495. CS_DATES_DMY2,
  496. CS_DATES_YMD1,
  497. CS_DATES_DMY2_YYYY,
  498. CS_DATES_YMD1_YYYY,
  499. CS_DATES_DMY4,
  500. CS_DATES_DMY4_YYYY,
  501. CS_DATES_MDY2,
  502. CS_DATES_MDY2_YYYY,
  503. CS_DATES_DMY3,
  504. CS_DATES_MDY3,
  505. CS_DATES_DMY3_YYYY,
  506. CS_DATES_MDY3_YYYY,
  507. CS_DATES_YMD3,
  508. CS_DATES_YMD3_YYYY
  509. };
  510. /* */
  511. #define CS_FALSE 0
  512. #define CS_TRUE 1
  513. #ifdef __cplusplus
  514. }
  515. #endif 
  516. #endif