34#define NSTIME_INIT_ZERO {0, 0}
37#define NSTIME_INIT_UNSET {0, INT_MAX}
40#define NSTIME_INIT_SECS_NSECS(secs, nsecs) {secs, nsecs}
43#define NSTIME_INIT_SECS_USECS(secs, usecs) {secs, usecs*1000}
46#define NSTIME_INIT_SECS_MSECS(secs, msecs) {secs, msecs*1000000}
49#define NSTIME_INIT_SECS(secs) {secs, 0}
52#define NSTIME_INIT_MAX {sizeof(time_t) > sizeof(int) ? LONG_MAX : INT_MAX, INT_MAX}
69WS_DLL_PUBLIC
bool nstime_is_unset(
const nstime_t *nstime);
96#define nstime_add(sum, a) nstime_sum(sum, sum, a)
99#define nstime_subtract(sum, a) nstime_delta(sum, sum, a)
109WS_DLL_PUBLIC
unsigned nstime_hash(
const nstime_t *nstime);
147#define NSTIME_ISO8601_BUFSIZE sizeof("YYYY-MM-DDTHH:MM:SS.123456789Z")
149WS_DLL_PUBLIC
size_t nstime_to_iso8601(
char *buf,
size_t buf_size,
const nstime_t *nstime);
152#define NSTIME_UNIX_BUFSIZE (20+10+1)
154WS_DLL_PUBLIC
void nstime_to_unix(
char *buf,
size_t buf_size,
const nstime_t *nstime);
163 WS_TSPREC_100_MSEC = 1,
164 WS_TSPREC_10_MSEC = 2,
166 WS_TSPREC_100_USEC = 4,
167 WS_TSPREC_10_USEC = 5,
169 WS_TSPREC_100_NSEC = 7,
170 WS_TSPREC_10_NSEC = 8,
180#define WS_TSPREC_MAX 9
185#define NUM_WS_TSPREC_VALS (WS_TSPREC_MAX + 1)
WS_DLL_PUBLIC double nstime_to_msec(const nstime_t *nstime)
Definition nstime.c:170
WS_DLL_PUBLIC void nstime_sum(nstime_t *sum, const nstime_t *a, const nstime_t *b)
Definition nstime.c:117
WS_DLL_PUBLIC void nstime_set_unset(nstime_t *nstime)
Definition nstime.c:44
WS_DLL_PUBLIC void nstime_delta(nstime_t *delta, const nstime_t *b, const nstime_t *a)
Definition nstime.c:76
WS_DLL_PUBLIC void nstime_set_zero(nstime_t *nstime)
Definition nstime.c:28
WS_DLL_PUBLIC bool filetime_ns_to_nstime(nstime_t *nstime, uint64_t nsfiletime)
Definition nstime.c:265
iso8601_fmt_e
Definition nstime.h:131
@ ISO8601_DATETIME_AUTO
Definition nstime.h:134
@ ISO8601_DATETIME_BASIC
Definition nstime.h:133
WS_DLL_PUBLIC int nstime_cmp(const nstime_t *a, const nstime_t *b)
Definition nstime.c:138
WS_DLL_PUBLIC bool nstime_is_zero(const nstime_t *nstime)
Definition nstime.c:35
WS_DLL_PUBLIC bool filetime_to_nstime(nstime_t *nstime, uint64_t filetime)
Definition nstime.c:241
WS_DLL_PUBLIC void nstime_copy(nstime_t *a, const nstime_t *b)
Definition nstime.c:65
WS_DLL_PUBLIC double nstime_to_sec(const nstime_t *nstime)
Definition nstime.c:180
WS_DLL_PUBLIC bool filetime_1sec_to_nstime(nstime_t *nstime, uint64_t filetime)
Definition nstime.c:286
WS_DLL_PUBLIC const char * iso8601_to_nstime(nstime_t *nstime, const char *ptr, iso8601_fmt_e format)
Definition nstime.c:325
WS_DLL_PUBLIC const char * unix_epoch_to_nstime(nstime_t *nstime, const char *ptr)
Definition nstime.c:546