6#if __DCL_HAVE_ALLOC_DEBUG
7#undef __DCL_ALLOC_LEVEL
8#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
23#define __DCL_TRACE0_N __DCL_TRACE0
24#define __DCL_TRACE1_N __DCL_TRACE1
25#define __DCL_TRACE2_N __DCL_TRACE2
26#define __DCL_TRACE3_N __DCL_TRACE3
27#define __DCL_TRACE4_N __DCL_TRACE4
29#define __DCL_TRACE0_N(fmt)
30#define __DCL_TRACE1_N(fmt, arg)
31#define __DCL_TRACE2_N(fmt, arg1, arg2)
32#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
33#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
41#define __SET_ERROR(_error) \
42 connection()->setErrorStatus(_error, __THIS_FILE__, __LINE__)
43#define __SET_ERROR_MSG(_message) \
44 conn()->setErrorMessage(_message, __THIS_FILE__, __LINE__)
63 Param::__queryHandle = _queryHandle;
75 case SQLITE_INTEGER: {
76 rc = sqlite3_bind_int64(
query()->stmt(), __number, __data.n);
80 rc = sqlite3_bind_double(
query()->stmt(), __number, __data.d);
84 rc = sqlite3_bind_text64(
query()->stmt(), __number, (
const char*)__data.p,
85 __size,
NULL, SQLITE_UTF8);
89 rc = sqlite3_bind_blob(
query()->stmt(), __number, __data.p, (
int)__size,
NULL);
94 rc = sqlite3_bind_null(
query()->stmt(), __number);
98 if (rc != SQLITE_OK) {
99 ByteStringBuilder sb = sqlite3_errmsg(
conn()->connHandle());
100 sb.append(
' ').append(__name);
121 __type = SQLITE_NULL;
125static inline int __ABS(
int _n)
127 return _n < 0 ? -_n : _n;
163 r =
setBytes(_val, _size, _valType, _sqlType);
172 Param::__dataType = _sqlType;
180 case sizeof(int8_t) : {
181 __data.n = *(int8_t*)_val;
184 case sizeof(int16_t) : {
185 __data.n = *(int16_t*)_val;
188 case sizeof(int32_t) : {
189 __data.n = *(int32_t*)_val;
192 case sizeof(int64_t) : {
193 __data.n = *(int64_t*)_val;
202 __type = SQLITE_INTEGER;
209 case sizeof(uint8_t) : {
210 __data.n = *(uint8_t*)_val;
213 case sizeof(uint16_t) : {
214 __data.n = *(uint16_t*)_val;
217 case sizeof(uint32_t) : {
218 __data.n = *(uint32_t*)_val;
221 case sizeof(uint64_t) : {
222 __data.n = *(uint64_t*)_val;
231 __type = SQLITE_INTEGER;
238 case sizeof(float) : {
239 __data.d = *(
float*)_val;
242 case sizeof(double) : {
243 __data.d = *(
double*)_val;
252 __type = SQLITE_FLOAT;
264 ByteStringBuilder sb;
274 __bytes = sb.toByteString();
276 __data.p = (
void*) __bytes.data();
277 __size = __bytes.length();
279 __type = SQLITE_TEXT;
292 __bytes = ByteString::format(
293 "%02d:%02d:%02d.%06d",
301 __bytes = ByteString::format(
302 "%02d:%02d:%02d.%06d %+03d:%02d",
312 __data.p = (
void*)__bytes.data();
313 __size = __bytes.length();
315 __type = SQLITE_TEXT;
327 ByteStringBuilder sb;
330 "%04d-%02d-%02d %02d:%02d:%02d.%06d",
342 "%04d-%02d-%02d %02d:%02d:%02d.%06d %+03d:%02d",
357 __bytes = sb.toByteString();
359 __data.p = (
void*)__bytes.data();
360 __size = __bytes.length();
362 __type = SQLITE_TEXT;
375 __bytes = ByteString::format(
376 "P%dY%dM%dDT%dH%dM%d.%dS",
387 __bytes = ByteString::format(
388 "P%dY%dM%dDT%dH%dM%-0.%dS",
398 __data.p = (
void*)__bytes.data();
399 __size = __bytes.length();
401 __type = SQLITE_TEXT;
412 const char* val = (
const char*)_val;
419 size = __bytes.length();
436 __data.p = (
const void*)val;
439 __type = valType ==
SQL::typeText ? SQLITE_TEXT : SQLITE_BLOB;
#define __SET_ERROR_MSG(_message)
const wchar_t * __dataTypeName(const ifx_sqlvar_t *_sqlvar)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define __SET_ERROR(_errorCode)
String toStringAll() const
static ByteString readBytes(InputStream &_input, size_t _n=(size_t) -1) __DCL_THROWS1(IOException *)
bool setUInteger(const void *_val, size_t _size)
bool setDate(const SQL::Date *_val, size_t _size)
bool init(SQL::Query *_query, int _number, const char *_name)
bool setFloat(const void *_val, size_t _size)
bool setTime(const SQL::Time *_val, size_t _size)
virtual bool __setData(_CONST void *_val, size_t _size, SQL::DataType _valType, SQL::DataType _sqlType)
bool setBytes(_CONST void *_val, size_t _size, SQL::DataType _valType, SQL::DataType _sqlType)
SqConnection * conn() const
virtual const wchar_t * serverDataTypeName() const
bool setInteger(const void *_val, size_t _size)
bool setTimeStamp(const SQL::TimeStamp *_val, size_t _size)
bool setInterval(const SQL::Interval *_val, size_t _size)