]> git.sur5r.net Git - cc65/blob - include/time.h
Merge pull request #663 from IrgendwerA8/more_popptr1_adaptations
[cc65] / include / time.h
1 /*****************************************************************************/
2 /*                                                                           */
3 /*                                  time.h                                   */
4 /*                                                                           */
5 /*                               Date and time                               */
6 /*                                                                           */
7 /*                                                                           */
8 /*                                                                           */
9 /* (C) 1998-2012 Ullrich von Bassewitz                                       */
10 /*               Roemerstrasse 52                                            */
11 /*               D-70794 Filderstadt                                         */
12 /* EMail:        uz@cc65.org                                                 */
13 /*                                                                           */
14 /*                                                                           */
15 /* This software is provided 'as-is', without any expressed or implied       */
16 /* warranty.  In no event will the authors be held liable for any damages    */
17 /* arising from the use of this software.                                    */
18 /*                                                                           */
19 /* Permission is granted to anyone to use this software for any purpose,     */
20 /* including commercial applications, and to alter it and redistribute it    */
21 /* freely, subject to the following restrictions:                            */
22 /*                                                                           */
23 /* 1. The origin of this software must not be misrepresented; you must not   */
24 /*    claim that you wrote the original software. If you use this software   */
25 /*    in a product, an acknowledgment in the product documentation would be  */
26 /*    appreciated but is not required.                                       */
27 /* 2. Altered source versions must be plainly marked as such, and must not   */
28 /*    be misrepresented as being the original software.                      */
29 /* 3. This notice may not be removed or altered from any source              */
30 /*    distribution.                                                          */
31 /*                                                                           */
32 /*****************************************************************************/
33
34
35
36 #ifndef _TIME_H
37 #define _TIME_H
38
39
40
41 /* NULL pointer */
42 #ifndef _HAVE_NULL
43 #define NULL    0
44 #define _HAVE_NULL
45 #endif
46
47 /* size_t is needed */
48 #ifndef _HAVE_size_t
49 #define _HAVE_size_t
50 typedef unsigned size_t;
51 #endif
52
53 typedef unsigned long time_t;
54 typedef unsigned long clock_t;
55
56 /* Structure for broken down time */
57 struct tm {     
58     int     tm_sec;
59     int     tm_min;
60     int     tm_hour;
61     int     tm_mday;
62     int     tm_mon;
63     int     tm_year;
64     int     tm_wday;
65     int     tm_yday;
66     int     tm_isdst;
67 };
68
69 /* Timezone representation, default is UTC */
70 extern struct _timezone {
71     char    daylight;   /* True if daylight savings time active */
72     long    timezone;   /* Number of seconds behind UTC */
73     char    tzname[5];  /* Name of timezone, e.g. CET */
74     char    dstname[5]; /* Name when daylight true, e.g. CEST */
75 } _tz;
76
77
78
79 #if defined(__ATARI__)
80 /* The clock depends on the video standard, so read it at runtime */
81 unsigned _clocks_per_sec (void);
82 #  define CLK_TCK               _clocks_per_sec()
83 #  define CLOCKS_PER_SEC        _clocks_per_sec()
84 #elif defined(__ATARI5200__)
85 #  define CLK_TCK               60      /* POSIX */
86 #  define CLOCKS_PER_SEC        60      /* ANSI */
87 #elif defined(__ATMOS__)
88 #  define CLK_TCK               100     /* POSIX */
89 #  define CLOCKS_PER_SEC        100     /* ANSI */
90 #elif defined(__CBM__)
91 #  if defined(__CBM510__) || defined(__CBM610__)
92 /* The 510/610 gets its clock from the AC current */
93 #    define CLK_TCK             50      /* POSIX */
94 #    define CLOCKS_PER_SEC      50      /* ANSI */
95 #  else
96 #    define CLK_TCK             60      /* POSIX */
97 #    define CLOCKS_PER_SEC      60      /* ANSI */
98 #  endif
99 #elif defined(__NES__)
100 #  define CLK_TCK               50      /* POSIX */
101 #  define CLOCKS_PER_SEC        50      /* ANSI */
102 #elif defined(__PCE__)
103 #  define CLK_TCK               60      /* POSIX */
104 #  define CLOCKS_PER_SEC        60      /* ANSI */
105 #elif  defined(__GAMATE__)
106 #  define CLK_TCK               135     /* POSIX */     /* FIXME */
107 #  define CLOCKS_PER_SEC        135     /* ANSI */      /* FIXME */
108 #elif  defined(__GEOS__)
109 #  define CLK_TCK               1       /* POSIX */
110 #  define CLOCKS_PER_SEC        1       /* ANSI */
111 #elif defined(__LYNX__)
112 /* The clock-rate depends on the video scan-rate;
113 ** so, read it at run-time.
114 */
115 extern clock_t _clk_tck (void);
116 #  define CLK_TCK               _clk_tck()
117 #  define CLOCKS_PER_SEC        _clk_tck()
118 #endif
119
120
121
122 time_t _systime (void);
123 /* Similar to time(), but:
124 **   - Is not ISO C
125 **   - Does not take the additional pointer
126 **   - Does not set errno when returning -1
127 */
128
129 /* ISO C function prototypes */
130 char* __fastcall__ asctime (const struct tm* timep);
131 clock_t clock (void);
132 char* __fastcall__ ctime (const time_t* timep);
133 struct tm* __fastcall__ gmtime (const time_t* timep);
134 struct tm* __fastcall__ localtime (const time_t* timep);
135 time_t __fastcall__ mktime (struct tm* timep);
136 size_t __fastcall__ strftime (char* buf, size_t bufsize, const char* format, const struct tm* tm);
137 time_t __fastcall__ time (time_t* t);
138
139
140
141 /* End of time.h */
142
143 #endif
144
145
146