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