00001
00002
00003
00004
00005
00006
00007
00008
00013 #ifndef _ATX_TIME_H_
00014 #define _ATX_TIME_H_
00015
00016
00017
00018
00019 #include "AtxConfig.h"
00020 #include "AtxTypes.h"
00021
00022
00023
00024
00025 typedef struct {
00026 ATX_Int32 seconds;
00027 ATX_Int32 nanoseconds;
00028 } ATX_TimeStamp;
00029
00030 typedef ATX_TimeStamp ATX_Time;
00031 typedef ATX_TimeStamp ATX_TimeInterval;
00032
00033
00034
00035
00036 #define ATX_TimeStamp_Set(t, s, n) \
00037 do {(t).seconds = (s); (t).nanoseconds = (n);} while(0)
00038
00039 #define ATX_TimeStamp_IsLater(t0,t1) \
00040 ( \
00041 ((t0).seconds > (t1).seconds) || \
00042 ( \
00043 (t0).seconds == (t1).seconds && \
00044 (t0).nanoseconds > (t1).nanoseconds \
00045 ) \
00046 )
00047
00048 #define ATX_TimeStamp_IsLaterOrEqual(t0,t1) \
00049 ( \
00050 ((t0).seconds > (t1).seconds) || \
00051 ( \
00052 (t0).seconds == (t1).seconds && \
00053 (t0).nanoseconds >= (t1).nanoseconds \
00054 ) \
00055 )
00056
00057 #define ATX_TimeStamp_Add(t0,t1,t2) do { \
00058 (t0).seconds = (t1).seconds + (t2).seconds; \
00059 (t0).nanoseconds = (t1).nanoseconds + (t2).nanoseconds; \
00060 if ((t0).nanoseconds > 1000000000) { \
00061 (t0).seconds++; \
00062 (t0).nanoseconds -= 1000000000; \
00063 } \
00064 } while (0)
00065
00066 #define ATX_TimeStamp_Sub(t0,t1,t2) do { \
00067 (t0).seconds = (t1).seconds - (t2).seconds; \
00068 (t0).nanoseconds = (t1).nanoseconds - (t2).nanoseconds; \
00069 if ((t0).nanoseconds < 0) { \
00070 (t0).seconds--; \
00071 (t0).nanoseconds += 1000000000; \
00072 } \
00073 } while (0)
00074
00075 #define ATX_TimeStamp_ToInt64(t, i) do { \
00076 ATX_Int64_Set_Int32(i, t.seconds); \
00077 ATX_Int64_Mul_Int32(i, 1000000000); \
00078 ATX_Int64_Add_Int32(i, t.nanoseconds); \
00079 } while (0)
00080
00081 #endif