home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 January / PCWorld_2000-01_cd.bin / Software / Servis / Devc / _SETUP.4 / Group3 / time.h < prev    next >
C/C++ Source or Header  |  1998-12-24  |  4KB  |  177 lines

  1. /* 
  2.  * time.h
  3.  *
  4.  * Date and time functions and types.
  5.  *
  6.  * This file is part of the Mingw32 package.
  7.  *
  8.  * Contributors:
  9.  *  Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  10.  *
  11.  *  THIS SOFTWARE IS NOT COPYRIGHTED
  12.  *
  13.  *  This source code is offered for use in the public domain. You may
  14.  *  use, modify or distribute it freely.
  15.  *
  16.  *  This code is distributed in the hope that it will be useful but
  17.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  18.  *  DISCLAMED. This includes but is not limited to warranties of
  19.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  20.  *
  21.  * $Revision: 2.3 $
  22.  * $Author: colin $
  23.  * $Date: 1998/04/17 03:44:39 $
  24.  *
  25.  */
  26.  
  27. #ifndef    _TIME_H_
  28. #define    _TIME_H_
  29.  
  30. #define __need_wchar_t
  31. #define __need_size_t
  32. #include <stddef.h>
  33.  
  34. /*
  35.  * Need a definition of time_t.
  36.  */
  37. #include <sys/types.h>
  38.  
  39. /*
  40.  * Number of clock ticks per second. A clock tick is the unit by which
  41.  * processor time is measured and is returned by 'clock'.
  42.  */
  43. #define    CLOCKS_PER_SEC    1000.0
  44. #define    CLK_TCK        CLOCKS_PER_SEC
  45.  
  46.  
  47. #ifndef RC_INVOKED
  48.  
  49. /*
  50.  * A type for storing the current time and date. This is the number of
  51.  * seconds since midnight Jan 1, 1970.
  52.  * NOTE: Normally this is defined by the above include of sys/types.h
  53.  */
  54. #ifndef _TIME_T_
  55. #define _TIME_T_
  56. typedef    long    time_t;
  57. #endif
  58.  
  59. /*
  60.  * A type for measuring processor time (in clock ticks).
  61.  */
  62. #ifndef _CLOCK_T_
  63. #define _CLOCK_T_
  64. typedef    long    clock_t;
  65. #endif
  66.  
  67.  
  68. /*
  69.  * A structure for storing all kinds of useful information about the
  70.  * current (or another) time.
  71.  */
  72. struct tm
  73. {
  74.     int    tm_sec;        /* Seconds: 0-59 (K&R says 0-61?) */
  75.     int    tm_min;        /* Minutes: 0-59 */
  76.     int    tm_hour;    /* Hours since midnight: 0-23 */
  77.     int    tm_mday;    /* Day of the month: 1-31 */
  78.     int    tm_mon;        /* Months *since* january: 0-11 */
  79.     int    tm_year;    /* Years since 1900 */
  80.     int    tm_wday;    /* Days since Sunday (0-6) */
  81.     int    tm_yday;    /* Days since Jan. 1: 0-365 */
  82.     int    tm_isdst;    /* +1 Daylight Savings Time, 0 No DST,
  83.                  * -1 don't know */
  84. };
  85.  
  86. #ifdef    __cplusplus
  87. extern "C" {
  88. #endif
  89.  
  90. clock_t    clock ();
  91. time_t    time (time_t* tp);
  92. double    difftime (time_t t2, time_t t1);
  93. time_t    mktime (struct tm* tmsp);
  94.  
  95. /*
  96.  * These functions write to and return pointers to static buffers that may
  97.  * be overwritten by other function calls. Yikes!
  98.  *
  99.  * NOTE: localtime, and perhaps the others of the four functions grouped
  100.  * below may return NULL if their argument is not 'acceptable'. Also note
  101.  * that calling asctime with a NULL pointer will produce an Invalid Page
  102.  * Fault and crap out your program. Guess how I know. Hint: stat called on
  103.  * a directory gives 'invalid' times in st_atime etc...
  104.  */
  105. char*        asctime (const struct tm* tmsp);
  106. char*        ctime (const time_t* tp);
  107. struct tm*    gmtime (const time_t* tm);
  108. struct tm*    localtime (const time_t* tm);
  109.  
  110.  
  111. size_t    strftime (char* caBuffer, size_t sizeMax, const char* szFormat,
  112.           const struct tm* tpPrint);
  113.  
  114. size_t    wcsftime (wchar_t* wcaBuffer, size_t sizeMax,
  115.           const wchar_t* wsFormat, const struct tm* tpPrint);
  116.  
  117. #ifndef __STRICT_ANSI__
  118. extern void    _tzset (void);
  119.  
  120. #ifndef _NO_OLDNAMES
  121. extern void    tzset (void);
  122. #endif
  123.  
  124. #endif    /* Not __STRICT_ANSI__ */
  125.  
  126. #ifdef    __cplusplus
  127. }
  128. #endif
  129.  
  130.  
  131. /*
  132.  * _daylight: non zero if daylight savings time is used.
  133.  * _timezone: difference in seconds between GMT and local time.
  134.  * _tzname: standard/daylight savings time zone names (an array with two
  135.  *          elements).
  136.  */
  137. #ifdef __MSVCRT__
  138.  
  139. #ifdef    __cplusplus
  140. extern "C" {
  141. #endif
  142.  
  143. extern int*    __p__daylight (void);
  144. extern long*    __p__timezone (void);
  145. extern char**    __p__tzname (void);
  146.  
  147. #ifdef    __cplusplus
  148. }
  149. #endif
  150.  
  151. #define _daylight    (*__p__daylight())
  152. #define _timezone    (*__p__timezone())
  153. #define _tzname        (__p__tzname())
  154.  
  155. #else /* not __MSVCRT (ie. crtdll) */
  156.  
  157. extern int*    __imp__daylight_dll;
  158. extern long*    __imp__timezone_dll;
  159. extern char**    __imp__tzname;
  160.  
  161. #define _daylight    (*__imp__daylight_dll)
  162. #define _timezone    (*__imp__timezone_dll)
  163. #define _tzname        (__imp__tzname)
  164.  
  165. #endif /* not __MSVCRT__ */
  166.  
  167. #ifndef _NO_OLDNAMES
  168. #define    daylight    _daylight
  169. /* NOTE: timezone not defined because it would conflict with sys/timeb.h */
  170. #define    tzname        _tzname
  171. #endif    /* Not _NO_OLDNAMES */
  172.  
  173. #endif    /* Not RC_INVOKED */
  174.  
  175. #endif    /* Not _TIME_H_ */
  176.  
  177.