1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
  
9
  
10
  
11
  
12
  
13
  
14
  
15
  
16
  
17
  
18
  
19
  
20
  
21
  
22
  
23
  
24
  
25
  
26
  
27
  
28
  
29
  
30
  
31
  
32
  
33
  
34
  
35
  
36
  
37
  
38
  
39
  
40
  
41
  
42
  
43
  
44
  
45
  
46
  
47
  
48
  
49
  
50
  
51
  
52
  
53
  
54
  
55
  
56
  
57
  
58
  
59
  
60
  
61
  
62
  
63
  
64
  
65
  
66
  
67
  
68
  
69
  
70
  
71
  
72
  
73
  
74
  
75
  
76
  
77
  
78
  
79
  
80
  
81
  
82
  
83
  
84
  
85
  
86
  
87
  
88
  
89
  
90
  
91
  
92
  
93
  
94
  
95
  
96
  
97
  
98
  
99
  
100
  
101
  
102
  
103
  
104
  
105
  
106
  
107
  
108
  
109
  
110
  
111
  
112
  
113
  
114
  
115
  
116
  
117
  
118
  
119
  
120
  
121
  
122
  
123
  
124
  
125
  
126
  
127
  
128
  
129
  
130
  
131
  
132
  
133
  
134
  
135
  
136
  
137
  
138
  
139
  
140
  
141
  
142
  
143
  
144
  
145
  
146
  
147
  
148
  
149
  
150
  
151
  
152
  
153
  
154
  
155
  
156
  
CHANGES 
FILES 
 
Calendar.pike    
        This is the virtual base class for any Calendar. 
        It might be used as type for variables  
        containing a random calendar object. 
 
TimeRanges.pmod  
        This contains the base classes for timerange objects: 
        TimeRange        
                The TimeRange is the virtual base class for any 
                timerange object. It defines everything that needs to 
                be possible to do with it, and has a lot of 
                non-virtual functions that calls back to the virtual 
                functions to ease implementations of new timerange 
                classes. 
        SuperTimeRange   
                The SuperTimeRange is a class that is used to  
                contain more then one timerange. This object 
                is created by methods and operators such as subtract, 
                `| or `^.  
                         
Time.pmod 
        This contains the base classes for calendars that uses 
        time-of-day with hours, minutes and seconds: 
        Hour 
        Minute 
        Second 
                The normal time-of-day units. They are defined 
                to contain n*3600, n*60 and n seconds respectively, 
                and to start on those positions of the day. 
                They autopromote upwards (second->minute->hour). 
        Fraction 
                A fraction is a partial second. It can start 
                and end on non-even seconds - it has an integer 
                for nanosecond precision. It autopromotes upwards 
                to second (etc). 
        This module can not be used standalone, but must have 
        some virtual functions filled in. 
        It extends the TimeRanges module. 
 
YMD.pike 
        This contains the base classes of any traditional calendar: 
        Year 
                The Year class, which contains the largest timerange 
                unit used. 
        Month 
                The month, which divides the year into non-equal 
                - most of the calendards, anyway - long day sequences, 
                and which is aligned to the year. 
        Week 
                The week, which is a equally long day sequence, 
                and isn't aligned to the year. 
        Day 
                The Day, which is the smallest unit before 
                time-of-day, and which is the base unit of time-of-day. 
        None of these four units autopromote. 
        The YMD module also extends the Time module, 
        so it contains those classes as well. 
                 
Gregorian.pmod 
        This is the base module for Julian style calendars; 
        despite the name. Most calendars of today are in sync 
        with the Gregorian calendar. 
ISO.pmod 
        This inherits the Gregorian calendar to tweak it to 
        conform to the ISO standards. Most affected are weeks,  
        which starts on Monday in the ISO calendar. 
        This is also the default calendar. 
Discordian.pmod 
        The Discordian calendar as described in Principia Discordia 
        is in sync with the Gregorian calendar (although some claim 
        that it should be the Julian - I go with what I can read  
        from my Principia Discordia). The module inherits and  
        tweaks the Gregorian module. 
Coptic.pmod 
        The Coptic calendar is by some sources ("St. Marks' 
        Coptic Orthodox Church" web pages) is for now on in sync with 
        the Gregorian Calendar, so this module too inherits 
        and tweaks the Gregorian module. It needs to be  
        adjusted for historical use. 
Julian.pmod 
        This is the Julian calendar, with the small changes 
        to the Gregorian calendar (leap years). 
 
Islamic.pmod 
        This is the Islamic calendar, using the 'Calendrical  
        Calculations' rules for new moon. It is based 
        directly on the YMD module. 
Stardate.pmod 
        This is the (TNG) Stardate calendar, which consists 
        of one time unit only, the Tick (1000 Tick is one earth year).  
        It is based directly on TimeRanges. 
 
Ruleset.pike 
        Each time unit keeps track of what rules are in affect now; 
        the rules contain two things for now, language to use and 
        timezone to use. It will be extended to contain geographical 
        position and possible other needed stuff later. 
        Any TimeRange object returning a new TimeRange object 
        will transfer the rules in the creation of the object. 
Rule.pmod 
        Contains the classes for the Timezone and Language objects 
        used in a Ruleset object. 
Language.pmod 
        This module keeps the base classes of languages. 
Timezone.pmod 
        This module keeps the base classes of timezones, 
        inheriting the DST rules and including the timezone 
        definitions that are created by the mkrules.pike  
        program. 
TZrules.pmod 
        This module has the DST rules (127). 
TZs.h 
        This file keeps the Timezone definitions (440). 
TZnames.pmod 
        This is a convinience module that keeps the names 
        of all possible timezones in a convinient mapping. 
mkrules.pike 
        This is the program that take timezone definition 
        files (as used by most unix systems) and create the  
        three files listed above. It is not a base class, 
        it's a complete program. 
 
Event.pmod 
        This module defines the base classes used for event 
        definitions: 
        Event 
                The virtual base class. 
        Date 
        Date_Weekday 
        Monthday_Weekday 
        Weekday 
                Open classes for self-created events. 
        Day_Event 
        Gregorian_Fixed 
        Easter 
        Easter_Relative 
        Monthday_Weekday_Relative 
                Classes for event definitions in Events.pmod. 
 
Namedays.pmod 
        This module defines the namedays used in some 
        countries and the saints days. 
Events.pmod 
        This module defines a number of events, used 
        all over the world. It also keeps tracks         
        of holidays and events used in countries and 
        regions. 
 
module.pmod 
        This is only used to make "Calendar.Day" equal 
        "Calendar.ISO.Day" but still keep "Calendar.Stardate" 
        intact.