97 struct timespec
csnip_time_add(struct timespec a, struct timespec b);
99 struct timespec
csnip_time_sub(struct timespec a, struct timespec b);
112 #define csnip_time_AsTimespec(src) \
113 csnip_time__AsTimespec((src))
115 #define csnip_time__AsTimespec(src) \
118 csnip_time_time_t_as_timespec( \
119 _Generic(src, time_t: src, default: 0)), \
121 csnip_time_float_as_timespec( \
122 _Generic(src, float: src, default: 0)), \
124 csnip_time_double_as_timespec( \
125 _Generic(src, double: src, default: 0)), \
127 csnip_time_ldouble_as_timespec( \
128 _Generic(src, long double: src, default: 0)), \
130 csnip_time_timeval_as_timespec( \
131 _Generic(src, struct timeval: src, \
132 default: (struct timeval){ 0 })), \
133 struct timespec: src)
143 #define csnip_time_Convert(src, target) \
144 csnip_time__Convert((src), (target), csnip__tmp_ts)
146 #define csnip_time__Convert(src, target, tmp) \
148 struct timespec tmp = \
149 csnip_time_AsTimespec(src); \
150 target = _Generic(target, \
152 csnip_time_timespec_as_time_t(tmp), \
154 csnip_time_timespec_as_float(tmp), \
156 csnip_time_timespec_as_double(tmp), \
158 csnip_time_timespec_as_ldouble(tmp), \
160 csnip_time_timespec_as_timeval(tmp), \
171 #define csnip_time_Sleep(amount, err) \
172 csnip_time__Sleep((amount), (err), csnip__cerr)
174 #define csnip_time__Sleep(amount, err, cerr) \
176 const int cerr = csnip_time_sleep( \
177 csnip_time_AsTimespec(amount)); \
179 csnip_err_Raise(cerr, err); \
190 #define csnip_time_IsLess(time_a, time_b) \
191 csnip_time_is_less( \
192 csnip_time_AsTimespec(time_a), \
193 csnip_time_AsTimespec(time_b))
201 #define csnip_time_IsLessEqual(time_a, time_b) \
202 csnip_time__IsLessEqual((time_a), (time_b))
204 #define csnip_time__IsLessEqual(time_a, time_b) \
205 csnip_time_is_less_equal( \
206 csnip_time_AsTimespec(time_a), \
207 csnip_time_AsTimespec(time_b))
216 #define csnip_time_Add(time_a, time_b) \
218 csnip_time_AsTimespec(time_a), \
219 csnip_time_AsTimespec(time_b))
227 #define csnip_time_Sub(time_a, time_b) \
229 csnip_time_AsTimespec(time_a), \
230 csnip_time_AsTimespec(time_b))
236 #if defined(CSNIP_SHORT_NAMES) && !defined(CSNIP_TIME_HAVE_SHORT_NAMES)
237 #define time_time_t_as_timespec csnip_time_time_t_as_timespec
238 #define time_float_as_timespec csnip_time_float_as_timespec
239 #define time_double_as_timespec csnip_time_double_as_timespec
240 #define time_ldouble_as_timespec csnip_time_ldouble_as_timespec
241 #define time_timeval_as_timespec csnip_time_timeval_as_timespec
242 #define time_timespec_as_time_t csnip_time_timespec_as_time_t
243 #define time_timespec_as_float csnip_time_timespec_as_float
244 #define time_timespec_as_double csnip_time_timespec_as_double
245 #define time_timespec_as_ldouble csnip_time_timespec_as_ldouble
246 #define time_timespec_as_timeval csnip_time_timespec_as_timeval
247 #define time_sleep csnip_time_sleep
248 #define time_is_less csnip_time_is_less
249 #define time_is_less_equal csnip_time_is_less_equal
250 #define time_add csnip_time_add
251 #define time_sub csnip_time_sub
252 #define time_AsTimespec csnip_time_AsTimespec
253 #define time_Convert csnip_time_Convert
254 #define time_Sleep csnip_time_Sleep
255 #define time_IsLess csnip_time_IsLess
256 #define time_IsLessEqual csnip_time_IsLessEqual
257 #define time_Add csnip_time_Add
258 #define time_Sub csnip_time_Sub
259 #define CSNIP_TIME_HAVE_SHORT_NAMES
struct timespec csnip_time_double_as_timespec(double d)
double -> timespec
struct timespec csnip_time_add(struct timespec a, struct timespec b)
Compute the sum of two durations.
Definition: time.c:81
struct timeval csnip_time_timespec_as_timeval(struct timespec ts)
timespec -> timeval
Definition: time.c:46
int csnip_time_sleep(struct timespec ts)
Sleep with subsecond precision.
Definition: time.c:54
int csnip_time_is_less_equal(struct timespec a, struct timespec b)
Less-than-or-equal comparison.
Definition: time.c:72
struct timespec csnip_time_sub(struct timespec a, struct timespec b)
Compute the difference of two durations.
Definition: time.c:95
float csnip_time_timespec_as_float(struct timespec ts)
timespec -> float
time_t csnip_time_timespec_as_time_t(struct timespec ts)
timespec -> time_t
struct timespec csnip_time_time_t_as_timespec(time_t t)
time_t -> timespec
int csnip_time_is_less(struct timespec a, struct timespec b)
Less-than comparison.
Definition: time.c:63
long double csnip_time_timespec_as_ldouble(struct timespec ts)
timespec -> long double
struct timespec csnip_time_timeval_as_timespec(struct timeval tv)
timeval -> timespec
Definition: time.c:24
double csnip_time_timespec_as_double(struct timespec ts)
timespec -> double
struct timespec csnip_time_ldouble_as_timespec(long double d)
long double -> timespec
struct timespec csnip_time_float_as_timespec(float f)
float -> timespec