25#if defined __cplusplus
26#define __STDC_LIMIT_MACROS
30#include "local_config.h"
40#define string_to_int64 __str2int64
41extern int string_to_int64(
const char *str, int64_t *num);
43#define string_to_int32 __str2int32
44extern int string_to_int32(
const char *str, int32_t *num);
46#define string_to_int16 __str2int16
47extern int string_to_int16(
const char *str, int16_t *num);
49#define string_to_int8 __str2int8
50extern int string_to_int8(
const char *str, int8_t *num);
52#define string_to_uint32 __str2uint32
53extern int string_to_uint32(
const char *str, uint32_t *num);
55#define string_to_uint16 __str2uint16
56extern int string_to_uint16(
const char *str, uint16_t *num);
58#define string_to_uint8 __str2uint8
59extern int string_to_uint8(
const char *str, uint8_t *num);
61#define string_to_double __str2double
62extern int string_to_double(
const char *str,
double *dbl);
64#define string_to_timeout __str2timeout
65extern int string_to_timeout(
const char *str,
unsigned *ms);
67#define string_to_size __str2size
68extern int string_to_size(
const char *str, int64_t *sz);
70#define hex_to_num __hex2num
71extern int hex_to_num(
const char *str,
int *num);
73#define char_to_hex __charhex
76#define char_to_uhex __charuhex
79#define int64_to_string __int64str
80static CC_INLINE
void int64_to_string(int64_t num,
BUILTIN_BUFFER *str)
82 snprintf(str->data,
sizeof(
BUILTIN_BUFFER),
"%lld", (
long long)num);
85#define int32_to_string __int32str
86static CC_INLINE
void int32_to_string(int32_t num,
BUILTIN_BUFFER *str)
91#define int16_to_string __int16str
92static CC_INLINE
void int16_to_string(int16_t num,
BUILTIN_BUFFER *str)
97#define int8_to_string __int8str
98static CC_INLINE
void int8_to_string(int8_t num,
BUILTIN_BUFFER *str)
103#define uint_to_strdec __uintstrdec
104extern unsigned uint_to_strdec(
unsigned u,
char *str,
unsigned len,
int pad);
106#define uint32_to_string __uint32str
107static CC_INLINE
void uint32_to_string(uint32_t num,
BUILTIN_BUFFER *str)
109 unsigned len = uint_to_strdec(num, str->data, 10, 0);
110 str->data[len] =
'\0';
113#define uint16_to_string __uint16str
114static CC_INLINE
void uint16_to_string(uint16_t num,
BUILTIN_BUFFER *str)
116 unsigned len = uint_to_strdec(num, str->data, 5, 0);
117 str->data[len] =
'\0';
120#define uint8_to_string __uint8str
121static CC_INLINE
void uint8_to_string(uint8_t num,
BUILTIN_BUFFER *str)
123 unsigned len = uint_to_strdec(num, str->data, 3, 0);
124 str->data[len] =
'\0';
127#define uint64_to_strdec __uint64strdec
128extern unsigned uint64_to_strdec(uint64_t u,
char *str,
unsigned len,
int pad);
130#define uint64_to_string __uint64str
131static CC_INLINE
void uint64_to_string(uint64_t num,
BUILTIN_BUFFER *str)
133 unsigned len = uint64_to_strdec(num, str->data, 20, 0);
134 str->data[len] =
'\0';
137#define double_to_string __doublestr
138static CC_INLINE
void double_to_string(
double dbl,
BUILTIN_BUFFER *str)
143#define TIMESTAMP_UTC_LEN (sizeof("YYYY-MM-DDTHH:MM:SSZ") - 1)
144#define TIMESTAMP_LEN (sizeof("YYYY-MM-DDTHH:MM:SS") - 1)
145#define DATESTAMP_LEN (sizeof("YYYY-MM-DD") - 1)
146#define INVALID_TIME (time_t)(0)
148#if !HAVE_TIMEGM && !defined(timegm)
149#define timegm __timegm
150extern time_t timegm(
struct tm *utctime_tm);
153#if !HAVE_LOCALTIME_R && !defined(localtime_r)
154#define localtime_r __localtime_r
155static CC_INLINE
struct tm *localtime_r(
const time_t *clock,
struct tm *result)
158 if (!clock || !result)
160 data = localtime(clock);
163 memcpy(result, data,
sizeof(*result));
168#if !HAVE_GMTIME_R && !defined(gmtime_r)
169#define gmtime_r __gmtime_r
170static CC_INLINE
struct tm *gmtime_r(
const time_t *clock,
struct tm *result)
173 if (!clock || !result)
175 data = gmtime(clock);
178 memcpy(result, data,
sizeof(*result));
183#define string_to_time __str2time
184extern int string_to_time(
const char *str, time_t *time);
186#define time_to_iso8601utc __time2iso8601utc
189#define time_to_iso8601 __time2iso8601
192#define time_to_isodate __time2isodate
195#define time_to_httptime __time2httptime
198typedef struct {
int tz_dir;
int tz_hour;
int tz_min;
char tz_str[8]; }
tz_t;
199#define time_tz __timetz
200extern tz_t *time_tz(time_t time,
tz_t* tz);