From 3a66a8d9270f1a9e28da3bdd9acbd0fde0a8c263 Mon Sep 17 00:00:00 2001 From: hyung-hwan Date: Sun, 16 Sep 2018 17:04:00 +0000 Subject: [PATCH] redefined some time macros selectively --- qse/include/qse/cmn/time.h | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/qse/include/qse/cmn/time.h b/qse/include/qse/cmn/time.h index c35bd9fb..ec286ea0 100644 --- a/qse/include/qse/cmn/time.h +++ b/qse/include/qse/cmn/time.h @@ -119,17 +119,35 @@ struct qse_btime_t int gmtoff; }; -#define qse_inittime(x,s,ns) (((x)->sec = (s)), ((x)->nsec = (ns))) -#define qse_cleartime(x) qse_inittime(x,0,0) -#define qse_cmptime(x,y) \ - (((x)->sec == (y)->sec)? ((x)->nsec - (y)->nsec): \ - ((x)->sec - (y)->sec)) + +#if defined(QSE_HAVE_INLINE) + static QSE_INLINE void qse_inittime(qse_ntime_t* x, qse_long_t s, qse_int32_t nsec) + { + x->sec = s; + x->nsec = nsec; + } + static QSE_INLINE void qse_cleartime(qse_ntime_t* x) { qse_inittime (x, 0, 0); } + /*static QSE_INLINE int qse_cmptime(qse_ntime_t* x, qse_ntime_t* y) + { + /* TODO: fix the type and value range issue and replace the macro below. + return (x->sec == y->sec)? (x->nsec - y->nsec): (x->sec - y->sec); + }*/ +# define qse_cmptime(x,y) (((x)->sec == (y)->sec)? ((x)->nsec - (y)->nsec): ((x)->sec - (y)->sec)) + + static QSE_INLINE int qse_isnegtime(qse_ntime_t* x) { return x->sec < 0; } + static QSE_INLINE int qse_ispostime(qse_ntime_t* x) { return x->sec > 0 || (x->sec == 0 && x->nsec > 0); } + static QSE_INLINE int qse_iszerotime(qse_ntime_t* x) { return x->sec == 0 && x->nsec == 0; } +#else +# define qse_inittime(x,s,ns) (((x)->sec = (s)), ((x)->nsec = (ns))) +# define qse_cleartime(x) qse_inittime(x,0,0) +# define qse_cmptime(x,y) (((x)->sec == (y)->sec)? ((x)->nsec - (y)->nsec): ((x)->sec - (y)->sec)) /* if time has been normalized properly, nsec must be equal to or * greater than 0. */ -#define qse_isnegtime(x) ((x)->sec < 0) -#define qse_ispostime(x) ((x)->sec > 0 || ((x)->sec == 0 && (x)->nsec > 0)) -#define qse_iszerotime(x) ((x)->sec == 0 && (x)->nsec == 0) +# define qse_isnegtime(x) ((x)->sec < 0) +# define qse_ispostime(x) ((x)->sec > 0 || ((x)->sec == 0 && (x)->nsec > 0)) +# define qse_iszerotime(x) ((x)->sec == 0 && (x)->nsec == 0) +#endif #if defined(__cplusplus)