lib/iec_std_lib.h
changeset 903 f712705bef65
parent 900 1e749c7b70f8
equal deleted inserted replaced
902:38dca2e264b6 903:f712705bef65
   221 /* NOTE: Unfortunately older versions of ANSI C (e.g. C99) do not allow explicit identification of elements in initializers
   221 /* NOTE: Unfortunately older versions of ANSI C (e.g. C99) do not allow explicit identification of elements in initializers
   222  *         e.g.  {tv_sec = 1, tv_nsec = 300}
   222  *         e.g.  {tv_sec = 1, tv_nsec = 300}
   223  *       They are therefore commented out. This however means that any change to the definition of IEC_TIMESPEC may require this
   223  *       They are therefore commented out. This however means that any change to the definition of IEC_TIMESPEC may require this
   224  *       macro to be updated too!
   224  *       macro to be updated too!
   225  */
   225  */
   226 #define ld long double
       
   227 #define __time_to_timespec(sign,mseconds,seconds,minutes,hours,days) \
   226 #define __time_to_timespec(sign,mseconds,seconds,minutes,hours,days) \
   228           ((IEC_TIMESPEC){\
   227           ((IEC_TIMESPEC){\
   229               /*tv_sec  =*/ ((long int)   (((sign>=0)?1:-1)*((((ld)days*24 + (ld)hours)*60 + (ld)minutes)*60 + (ld)seconds + (ld)mseconds/1e3))), \
   228               /*tv_sec  =*/ ((long int)   (((sign>=0)?1:-1)*((((long double)days*24 + (long double)hours)*60 + (long double)minutes)*60 + (long double)seconds + (long double)mseconds/1e3))), \
   230               /*tv_nsec =*/ ((long int)(( \
   229               /*tv_nsec =*/ ((long int)(( \
   231                             ((long double)(((sign>=0)?1:-1)*((((ld)days*24 + (ld)hours)*60 + (ld)minutes)*60 + (ld)seconds + (ld)mseconds/1e3))) - \
   230                             ((long double)(((sign>=0)?1:-1)*((((long double)days*24 + (long double)hours)*60 + (long double)minutes)*60 + (long double)seconds + (long double)mseconds/1e3))) - \
   232                             ((long int)   (((sign>=0)?1:-1)*((((ld)days*24 + (ld)hours)*60 + (ld)minutes)*60 + (ld)seconds + (ld)mseconds/1e3)))   \
   231                             ((long int)   (((sign>=0)?1:-1)*((((long double)days*24 + (long double)hours)*60 + (long double)minutes)*60 + (long double)seconds + (long double)mseconds/1e3)))   \
   233                             )*1e9))\
   232                             )*1e9))\
   234         })
   233         })
   235 #undef ld
       
   236 
   234 
   237 
   235 
   238 
   236 
   239 
   237 
   240 /* NOTE: The following function was turned into a macro, so it could be used to initialize the initial value of TOD (TIME_OF_DAY) variables */
   238 /* NOTE: The following function was turned into a macro, so it could be used to initialize the initial value of TOD (TIME_OF_DAY) variables */
   248   ts.tv_nsec = (long int)((total_sec - ts.tv_sec)*1e9);
   246   ts.tv_nsec = (long int)((total_sec - ts.tv_sec)*1e9);
   249 
   247 
   250   return ts;
   248   return ts;
   251 }
   249 }
   252 */
   250 */
   253 #define ld long double
       
   254 #define __tod_to_timespec(seconds,minutes,hours) \
   251 #define __tod_to_timespec(seconds,minutes,hours) \
   255           ((IEC_TIMESPEC){\
   252           ((IEC_TIMESPEC){\
   256               /*tv_sec  =*/ ((long int)   ((((ld)hours)*60 + (ld)minutes)*60 + (ld)seconds)), \
   253               /*tv_sec  =*/ ((long int)   ((((long double)hours)*60 + (long double)minutes)*60 + (long double)seconds)), \
   257               /*tv_nsec =*/ ((long int)(( \
   254               /*tv_nsec =*/ ((long int)(( \
   258                             ((long double)((((ld)hours)*60 + (ld)minutes)*60 + (ld)seconds)) - \
   255                             ((long double)((((long double)hours)*60 + (long double)minutes)*60 + (long double)seconds)) - \
   259                             ((long int)   ((((ld)hours)*60 + (ld)minutes)*60 + (ld)seconds))   \
   256                             ((long int)   ((((long double)hours)*60 + (long double)minutes)*60 + (long double)seconds))   \
   260                             )*1e9))\
   257                             )*1e9))\
   261         })
   258         })
   262 #undef ld
       
   263 
   259 
   264 
   260 
   265 #define EPOCH_YEAR 1970
   261 #define EPOCH_YEAR 1970
   266 #define SECONDS_PER_MINUTE 60
   262 #define SECONDS_PER_MINUTE 60
   267 #define SECONDS_PER_HOUR (60 * SECONDS_PER_MINUTE)
   263 #define SECONDS_PER_HOUR (60 * SECONDS_PER_MINUTE)