1 /* : : generated from tmx by iffe version 2013-11-14 : : */
2 #ifndef _TMX_H
3 #define _TMX_H 1
4 /*
5  * AT&T Research
6  *
7  * high resolution Time_t support
8  */
9 
10 #include "tm.h"
11 #include "tv.h"
12 
13 // #define TMX_MAXDATE "2554-07-21+23:34:33.709551614 UTC"
14 #define TMX_MAXYEAR 2554
15 #define TMX_RESOLUTION 1000000000
16 
17 typedef uint64_t Time_t;
18 typedef uint64_t Tmxsec_t;
19 typedef uint32_t Tmxnsec_t;
20 
21 #define tmxsec(t) ((Tmxsec_t)((t) / 1000000000))
22 #define tmxnsec(t) ((Tmxnsec_t)((t) % 1000000000))
23 #define tmxsns(s, n) (((((Time_t)(s)) * 1000000000)) + ((Time_t)(n)))
24 
25 #define TMX_NOTIME ((Time_t)(-1))
26 #define TMX_NOW tmxgettime()
27 
28 // #define tmx2tv(t, v) ((v)->tv_nsec = tmxnsec(t), (v)->tv_sec = tmxsec(t))
29 // #define tv2tmx(v) tmxsns((v)->tv_sec, (v)->tv_nsec)
30 
31 #define tmxclock(p) tmxsns(((p) ? *(p) : time(NULL)), 0)
32 
33 #define tmxgetatime(s) tmxsns((s)->st_atime, ST_ATIME_NSEC_GET(s))
34 #define tmxgetmtime(s) tmxsns((s)->st_mtime, ST_MTIME_NSEC_GET(s))
35 // #define tmxgetctime(s) tmxsns((s)->st_ctime, ST_CTIME_NSEC_GET(s))
36 
37 // #define tmxsetatime(s, t) ((s)->st_atime = tmxsec(t), ST_ATIME_NSEC_SET(s, tmxnsec(t)))
38 // #define tmxsetctime(s, t) ((s)->st_ctime = tmxsec(t), ST_CTIME_NSEC_SET(s, tmxnsec(t)))
39 // #define tmxsetmtime(s, t) ((s)->st_mtime = tmxsec(t), ST_MTIME_NSEC_SET(s, tmxnsec(t)))
40 
41 extern Time_t tmxdate(const char *, char **, Time_t);
42 extern char *tmxfmt(char *, size_t, const char *, Time_t);
43 extern Tm_t *tmxmake(Time_t);
44 extern Time_t tmxscan(const char *, char **, const char *, char **, Time_t, long);
45 extern Time_t tmxtime(Tm_t *, int);
46 extern Tm_t *tmxtm(Tm_t *, Time_t, Tm_zone_t *);
47 extern struct tm *tmlocaltime(const time_t *);
48 extern Time_t tmxgettime(void);
49 extern char *fmttmx(const char *, Time_t);
50 
51 #endif  // _TMX_H
52