10#if __DCL_HAVE_ALLOC_DEBUG
11#undef __DCL_ALLOC_LEVEL
12#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
20#define __DCL_TRACE0_N __DCL_TRACE0
21#define __DCL_TRACE1_N __DCL_TRACE1
22#define __DCL_TRACE2_N __DCL_TRACE2
23#define __DCL_TRACE3_N __DCL_TRACE3
24#define __DCL_TRACE4_N __DCL_TRACE4
26#define __DCL_TRACE0_N(fmt)
27#define __DCL_TRACE1_N(fmt, arg)
28#define __DCL_TRACE2_N(fmt, arg1, arg2)
29#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
30#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
33#if __DCL_HAVE_THIS_FILE__
40static int32_t __fraction_normalize(
long _n)
52 return _n * (1000000000 / divider);
56 const char* _s,
const char** _endptr,
85 memset(&_r, 0,
sizeof(_r));
89 char* endptr = (
char*)_s;
92 const char* nptr = endptr;
93 long n = strtol(nptr, &endptr, 10);
94 if (errno == ERANGE) {
100 if (*endptr ==
'-') {
103 else if (*endptr ==
':') {
112 else if (*endptr ==
'B') {
121 state, n, endptr, *endptr ? *endptr :
'$');
124 _r.
year = (int16_t)n;
127 _r.
month = (uint8_t)n;
133 _r.
hour = (uint8_t)n;
142 _r.
frac = __fraction_normalize(n);
145 _r.
tzoff = (int16_t)(n * 60);
148 _r.
tzoff += (int16_t)n;
164 if (*endptr ==
'\0' || state ==
__DONE) {
170 && (*endptr ==
'+' || *endptr ==
'-')
188 const char* _s,
const char** _endptr,
218 memset(&_r, 0,
sizeof(_r));
221 char* endptr = (
char*)_s;
224 const char* nptr = endptr;
225 long n = strtol(nptr, &endptr, 10);
226 if (errno == ERANGE) {
232 state, endptr, (*endptr ? *endptr :
'$'), n);
235 _r.
years = (int32_t)n;
246 _r.
days = (int32_t)n;
252 _r.
hours = (int8_t)n;
261 _r.
fracs = __fraction_normalize(n)
262 * (dotsign ==
'-' ? -1 : 1);
295#define SQLTYPE_NAME(_type, _name) case _type : return L ## _name
305 default:
return L
"Unknown Type (Binary Mapped)";
320#define INT_464269060799999 ((((i64)0x1a640)<<32)|0x1072fdff)
322static int validJulianDay(sqlite3_int64 iJD) {
326static void computeYMD_HMS(
DateTime* p)
328 int Z, alpha, A, B, C, D, E, X1;
329 Z = (int)((p->
iJD + 43200000) / 86400000);
330 alpha = (int)((Z + 32044.75) / 36524.25) - 52;
331 A = Z + 1 + alpha - ((alpha + 100) / 4) + 25;
333 C = (int)((B - 122.1) / 365.25);
334 D = (36525 * (C & 32767)) / 100;
335 E = (int)((B - D) / 30.6001);
336 X1 = (int)(30.6001 * E);
338 p->
M = E < 14 ? E - 1 : E - 13;
339 p->
Y = p->
M > 2 ? C - 4716 : C - 4715;
342 day_ms = (int)((p->
iJD + 43200000) % 86400000);
343 p->
s = (day_ms % 60000) / 1000.0;
344 day_min = day_ms / 60000;
348 p->
ms = day_ms % 1000;
358 dt.
iJD = (sqlite3_int64)(_julianday * 86400000.0 + 0.5);
359 if (!validJulianDay(dt.
iJD)) {
370 _r.
sec = (uint8_t) dt.
s;
371 _r.
frac = dt.
ms * 1000000;
383 dt.
iJD = (_unixepoch + 21086676 * (
i64)10000) * 1000;
385 if (!validJulianDay(dt.
iJD)) {
396 _r.
sec = (uint8_t)dt.
s;
397 _r.
frac = dt.
ms * 1000000;
#define __DCL_ASSERT(expr)
#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
const wchar_t * __dataTypeName(int _type)
bool __decode_timestamp_julianday(double _julianday, SQL::TimeStamp &_r)
bool __decode_timestamp_iso(const char *_s, const char **_endptr, SQL::TimeStamp &_r)
#define SQLTYPE_NAME(_type, _name)
bool __decode_timestamp_unixepoch(int64_t _unixepoch, SQL::TimeStamp &_r)
#define __DCL_TRACE1_N(fmt, arg)
#define __DCL_TRACE2_N(fmt, arg1, arg2)
bool __decode_interval_iso(const char *_s, const char **_endptr, SQL::Interval &_r)
#define INT_464269060799999