00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _tdsconvert_h_
00021 #define _tdsconvert_h_
00022
00023 #if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
00024 #pragma GCC visibility push(hidden)
00025 #endif
00026
00027 #ifdef __cplusplus
00028 extern "C"
00029 {
00030 #if 0
00031 }
00032 #endif
00033 #endif
00034
00035
00036
00037 typedef union conv_result
00038 {
00039 TDS_TINYINT ti;
00040 TDS_SMALLINT si;
00041 TDS_INT i;
00042 TDS_INT8 bi;
00043 TDS_FLOAT f;
00044 TDS_REAL r;
00045 TDS_CHAR *c;
00046 TDS_MONEY m;
00047 TDS_MONEY4 m4;
00048 TDS_DATETIME dt;
00049 TDS_DATETIME4 dt4;
00050 TDS_NUMERIC n;
00051 TDS_CHAR *ib;
00052 TDS_UNIQUE u;
00053
00054 struct cc_t {
00055 TDS_CHAR *c;
00056 TDS_UINT len;
00057 } cc;
00058 struct cb_t {
00059 TDS_CHAR *ib;
00060 TDS_UINT len;
00061 } cb;
00062 }
00063 CONV_RESULT;
00064
00065
00066
00067
00068 #define TDS_CONVERT_FAIL -1
00069 #define TDS_CONVERT_NOAVAIL -2
00070 #define TDS_CONVERT_SYNTAX -3
00071 #define TDS_CONVERT_NOMEM -4
00072 #define TDS_CONVERT_OVERFLOW -5
00073
00074
00075 #define TDS_CONVERT_CHAR 256
00076 #define TDS_CONVERT_BINARY 257
00077
00078 struct tds_time
00079 {
00080 int tm_year;
00081 int tm_mon;
00082 int tm_mday;
00083 int tm_hour;
00084 int tm_min;
00085 int tm_sec;
00086 int tm_ms;
00087 };
00088
00089 unsigned char tds_willconvert(int srctype, int desttype);
00090
00091 TDS_INT tds_get_null_type(int srctype);
00092 TDS_INT tds_char2hex(TDS_CHAR *dest, TDS_UINT destlen, const TDS_CHAR * src, TDS_UINT srclen);
00093 TDS_INT tds_convert(const TDSCONTEXT * context, int srctype, const TDS_CHAR * src, TDS_UINT srclen, int desttype, CONV_RESULT * cr);
00094
00095 size_t tds_strftime(char *buf, size_t maxsize, const char *format, const TDSDATEREC * timeptr);
00096
00097 #ifdef __cplusplus
00098 #if 0
00099 {
00100 #endif
00101 }
00102 #endif
00103
00104 #if defined(__GNUC__) && __GNUC__ >= 4 && !defined(__MINGW32__)
00105 #pragma GCC visibility pop
00106 #endif
00107
00108 #endif