5 typedef struct _LttTime
{
11 static const unsigned long NANOSECONDS_PER_SECOND
= 1000000000;
13 static const LttTime ltt_time_zero
= { 0, 0};
16 static inline LttTime
ltt_time_sub(LttTime t1
, LttTime t2
)
19 res
.tv_sec
= t1
.tv_sec
- t2
.tv_sec
;
20 if(t1
.tv_nsec
< t2
.tv_nsec
) {
22 res
.tv_nsec
= NANOSECONDS_PER_SECOND
+ t1
.tv_nsec
- t2
.tv_nsec
;
25 res
.tv_nsec
= t1
.tv_nsec
- t2
.tv_nsec
;
31 static inline LttTime
ltt_time_add(LttTime t1
, LttTime t2
)
34 res
.tv_sec
= t1
.tv_sec
+ t2
.tv_sec
;
35 res
.tv_nsec
= t1
.tv_nsec
+ t2
.tv_nsec
;
36 if(res
.tv_nsec
>= NANOSECONDS_PER_SECOND
) {
38 res
.tv_nsec
-= NANOSECONDS_PER_SECOND
;
44 static inline LttTime
ltt_time_mul(LttTime t1
, float f
)
49 nsec
= (double)t1
.tv_nsec
* f
;
50 res
.tv_sec
= nsec
/ NANOSECONDS_PER_SECOND
;
51 res
.tv_nsec
= nsec
- res
.tv_sec
* NANOSECONDS_PER_SECOND
;
52 res
.tv_sec
+= t1
.tv_sec
* f
;
57 static inline LttTime
ltt_time_div(LttTime t1
, float f
)
62 sec
= t1
.tv_sec
/ (double)f
;
64 res
.tv_nsec
= t1
.tv_nsec
/ (double)f
+ (sec
- res
.tv_sec
) *
65 NANOSECONDS_PER_SECOND
;
70 static inline int ltt_time_compare(LttTime t1
, LttTime t2
)
72 if(t1
.tv_sec
> t2
.tv_sec
) return 1;
73 if(t1
.tv_sec
< t2
.tv_sec
) return -1;
74 if(t1
.tv_nsec
> t2
.tv_nsec
) return 1;
75 if(t1
.tv_nsec
< t2
.tv_nsec
) return -1;
80 static inline double ltt_time_to_double(LttTime t1
)
82 return (double)t1
.tv_sec
+ (double)t1
.tv_nsec
/ NANOSECONDS_PER_SECOND
;
86 static inline LttTime
ltt_time_from_double(double t1
)
90 res
.tv_nsec
= (t1
- res
.tv_sec
) * NANOSECONDS_PER_SECOND
;
This page took 0.031635 seconds and 4 git commands to generate.