1 /* Copyright (C) 2000-2015 Lavtech.com corp. All rights reserved.
2
3 This program is free software; you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation; either version 2 of the License, or
6 (at your option) any later version.
7
8 This program is distributed in the hope that it will be useful,
9 but WITHOUT ANY WARRANTY; without even the implied warranty of
10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License
14 along with this program; if not, write to the Free Software
15 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 */
17
18 #include "udm_config.h"
19
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <string.h>
23 #include <sys/types.h>
24 #include <errno.h>
25
26 #include "udm_common.h"
27 #include "udm_vars.h"
28 #include "udm_db.h" /* For UdmFind() */
29 #include "udm_sqldbms.h"
30 #include "udm_db_int.h"
31 #include "udm_prog.h"
32
33 #ifdef HAVE_SQL /* TODO34 */
34
35
36 typedef struct
37 {
38 UDM_VALUE generic;
39 UDM_SQLRES Result;
40 } UDM_VALUE_SQLRES;
41
42
43 typedef struct
44 {
45 UDM_VAR_HEADER Header;
46 UDM_VALUE_SQLRES Value;
47 } UDM_VAR_SQLRES;
48
49
50 static udm_rc_t
UdmValueSQLResultDump(const char * Data,const char * name,FILE * f)51 UdmValueSQLResultDump(const char *Data, const char *name, FILE *f)
52 {
53 return UDM_NOTARGET;
54 }
55
56
57 static udm_var_flag_t
UdmValueSQLResultFlags(const char * Data)58 UdmValueSQLResultFlags(const char *Data)
59 {
60 return UDM_VARFLAG_READONLY;
61 }
62
63
64 static udm_secno_t
UdmValueSQLResultSecno(const char * Data)65 UdmValueSQLResultSecno(const char *Data)
66 {
67 return 0;
68 }
69
70
71 static size_t
UdmValueSQLResultMemUsed(const char * Data)72 UdmValueSQLResultMemUsed(const char *Data)
73 {
74 return sizeof(UDM_SQLRES);
75 }
76
77
78 static udm_rc_t
UdmValueSQLResultConstructor(char * Data,const UDM_VALUE ** args,size_t nargs)79 UdmValueSQLResultConstructor(char *Data,
80 const UDM_VALUE **args, size_t nargs)
81 {
82 UDM_BZERO(Data, sizeof(UDM_SQLRES));
83 return UDM_OK;
84 }
85
86
87 static size_t
UdmValueSQLResultVarSize(void)88 UdmValueSQLResultVarSize(void)
89 {
90 return sizeof(UDM_VAR_SQLRES);
91 }
92
93
94 static size_t
UdmValueSQLResultValueSize(void)95 UdmValueSQLResultValueSize(void)
96 {
97 return sizeof(UDM_VALUE_SQLRES);
98 }
99
100
101 static size_t
UdmValueSQLResultDataOffset(void)102 UdmValueSQLResultDataOffset(void)
103 {
104 return offsetof(UDM_VALUE_SQLRES, Result);
105 }
106
107
108 static size_t
UdmValueSQLResultDataSize(void)109 UdmValueSQLResultDataSize(void)
110 {
111 return sizeof(UDM_SQLRES);
112 }
113
114
115 static size_t
UdmValueSQLResultDataAlignment(void)116 UdmValueSQLResultDataAlignment(void)
117 {
118 return sizeof(size_t);
119 }
120
121
122 static void
UdmValueSQLResultDestructor(char * Data)123 UdmValueSQLResultDestructor(char *Data)
124 {
125 UdmSQLFree((UDM_SQLRES*) Data);
126 }
127
128
129 static udm_rc_t
UdmValueSQLResultCopyValue(char * D,const char * S)130 UdmValueSQLResultCopyValue(char *D, const char *S)
131 {
132 UDM_ASSERT(0); /* TODO34: Add CloneVar(), with reference */
133 memmove(D, S, sizeof(UDM_SQLRES));
134 return UDM_OK;
135 }
136
137
138 static void
UdmValueSQLResultGetConstStr(const char * Data,UDM_CONST_STR * Val)139 UdmValueSQLResultGetConstStr(const char *Data, UDM_CONST_STR *Val)
140 {
141 static const UDM_CONST_STR name= {UDM_CSTR_WITH_LEN("#SQLResult#")};
142 *Val= name;
143 }
144
145
146 static void
UdmValueSQLResultGetBool(const char * Data,udm_bool_t * val)147 UdmValueSQLResultGetBool(const char *Data, udm_bool_t *val)
148 {
149 *val= UDM_TRUE;
150 }
151
152
153 static void
UdmValueSQLResultGetInt(const char * Data,int * val)154 UdmValueSQLResultGetInt(const char *Data, int *val)
155 {
156 *val= 0;
157 }
158
159
160 static void
UdmValueSQLResultGetUInt(const char * Data,unsigned int * val)161 UdmValueSQLResultGetUInt(const char *Data, unsigned int *val)
162 {
163 *val= 0;
164 }
165
166
167 static void
UdmValueSQLResultGetDouble(const char * Data,double * val)168 UdmValueSQLResultGetDouble(const char *Data, double *val)
169 {
170 *val= 0.0;
171 }
172
173
174 static udm_rc_t
UdmValueSQLResultSetInt(char * Data,int value)175 UdmValueSQLResultSetInt(char *Data, int value)
176 {
177 return UDM_NOTARGET;
178 }
179
180
181 static udm_rc_t
UdmValueSQLResultSetDouble(char * Data,double value)182 UdmValueSQLResultSetDouble(char *Data, double value)
183 {
184 return UDM_NOTARGET;
185 }
186
187
188 static udm_rc_t
UdmValueSQLResultConvertCharset(char * Data,UDM_CONV * conv,int flags)189 UdmValueSQLResultConvertCharset(char *Data, UDM_CONV *conv, int flags)
190 {
191 return UDM_NOTARGET;
192 }
193
194
195 static udm_rc_t
UdmValueSQLResultAppendStrn(char * Data,const char * str,size_t length)196 UdmValueSQLResultAppendStrn(char *Data, const char *str, size_t length)
197 {
198 return UDM_NOTARGET;
199 }
200
201
202 static udm_rc_t
UdmValueSQLResultAppendConv(char * Data,size_t maxlen,UDM_CONV * cnv,int cnvflags,const char * src,size_t srclen)203 UdmValueSQLResultAppendConv(char *Data, size_t maxlen,
204 UDM_CONV *cnv, int cnvflags,
205 const char *src, size_t srclen)
206 {
207 return UDM_NOTARGET;
208 }
209
210
211 static udm_rc_t
UdmValueSQLResultSetStrn(char * Data,const char * str,size_t length)212 UdmValueSQLResultSetStrn(char *Data, const char *str, size_t length)
213 {
214 return UDM_NOTARGET;
215 }
216
217
218 static udm_rc_t
UdmValueSQLResultSetConv(char * Data,UDM_CONV * conv,int cnvflags,const char * src,size_t srclen)219 UdmValueSQLResultSetConv(char *Data, UDM_CONV *conv, int cnvflags,
220 const char *src, size_t srclen)
221 {
222 return UDM_NOTARGET;
223 }
224
225
226 static udm_rc_t
UdmValueSQLResultPrintToFile(const char * Data,FILE * f)227 UdmValueSQLResultPrintToFile(const char *Data, FILE *f)
228 {
229 return UDM_OK;
230 }
231
232
233 static udm_rc_t
UdmValueSQLResultPrintToDSTR(const char * Data,UDM_DSTR * dstr)234 UdmValueSQLResultPrintToDSTR(const char *Data, UDM_DSTR *dstr)
235 {
236 return UDM_OK;
237 }
238
239
240 UDM_VALUE_HANDLER UdmValueHandlerSQLResult=
241 {
242 UDM_VALUE_HANDLER_TYPE_SQLRESULT,
243 UDM_VALUE_DATA_TYPE_SQLRESULT,
244 UDM_VALUE_DATA_TYPE_STR,
245 "UdmSQLResult",
246 UdmValueSQLResultConstructor,
247 UdmValueSQLResultDestructor,
248 UdmValueSQLResultCopyValue,
249 UdmValueSQLResultVarSize,
250 UdmValueSQLResultValueSize,
251 UdmValueSQLResultDataOffset,
252 UdmValueSQLResultDataSize,
253 UdmValueSQLResultDataAlignment,
254 UdmValueSQLResultDump,
255 UdmValueSQLResultFlags,
256 UdmValueSQLResultSecno,
257 UdmValueSQLResultMemUsed,
258 UdmValueSQLResultGetConstStr,
259 UdmValueSQLResultGetBool,
260 UdmValueSQLResultGetInt,
261 UdmValueSQLResultGetUInt,
262 UdmValueSQLResultGetDouble,
263 UdmValueSQLResultSetInt,
264 UdmValueSQLResultSetDouble,
265 UdmValueSQLResultSetStrn,
266 UdmValueSQLResultPrintToFile,
267 UdmValueSQLResultPrintToDSTR,
268 UdmValueSQLResultConvertCharset,
269 UdmValueSQLResultSetConv,
270 UdmValueSQLResultAppendStrn,
271 UdmValueSQLResultAppendConv,
272 NULL,
273 };
274 #endif /* HAVE_SQL */
275