annotate dwtx/dwtxhelper/mangoicu/UCalendar.d @ 92:f05207c07a98

changed filetype to unix
author Frank Benoit <benoit@tionex.de>
date Mon, 07 Jul 2008 15:54:03 +0200
parents 11e8159caf7a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
92
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
1 /*******************************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
2
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
3 @file UCalendar.d
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
4
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
5 Copyright (c) 2004 Kris Bell
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
6
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
7 This software is provided 'as-is', without any express or implied
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
8 warranty. In no event will the authors be held liable for damages
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
9 of any kind arising from the use of this software.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
10
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
11 Permission is hereby granted to anyone to use this software for any
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
12 purpose, including commercial applications, and to alter it and/or
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
13 redistribute it freely, subject to the following restrictions:
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
14
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
15 1. The origin of this software must not be misrepresented; you must
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
16 not claim that you wrote the original software. If you use this
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
17 software in a product, an acknowledgment within documentation of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
18 said product would be appreciated but is not required.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
19
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
20 2. Altered source versions must be plainly marked as such, and must
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
21 not be misrepresented as being the original software.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
22
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
23 3. This notice may not be removed or altered from any distribution
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
24 of the source.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
25
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
26 4. Derivative works are permitted, but they must carry this notice
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
27 in full and credit the original source.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
28
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
29
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
31
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
32
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
33 @version Initial version, November 2004
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
34 @author Kris
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
35
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
36 Note that this package and documentation is built around the ICU
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
37 project (http://oss.software.ibm.com/icu/). Below is the license
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
38 statement as specified by that software:
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
39
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
40
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
41 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
42
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
43
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
44 ICU License - ICU 1.8.1 and later
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
45
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
46 COPYRIGHT AND PERMISSION NOTICE
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
47
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
48 Copyright (c) 1995-2003 International Business Machines Corporation and
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
49 others.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
50
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
51 All rights reserved.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
52
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
53 Permission is hereby granted, free of charge, to any person obtaining a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
54 copy of this software and associated documentation files (the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
55 "Software"), to deal in the Software without restriction, including
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
56 without limitation the rights to use, copy, modify, merge, publish,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
57 distribute, and/or sell copies of the Software, and to permit persons
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
58 to whom the Software is furnished to do so, provided that the above
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
59 copyright notice(s) and this permission notice appear in all copies of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
60 the Software and that both the above copyright notice(s) and this
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
61 permission notice appear in supporting documentation.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
62
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
63 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
64 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
65 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
66 OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
67 HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
68 INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
69 FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
70 NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
71 WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
72
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
73 Except as contained in this notice, the name of a copyright holder
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
74 shall not be used in advertising or otherwise to promote the sale, use
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
75 or other dealings in this Software without prior written authorization
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
76 of the copyright holder.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
77
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
78 ----------------------------------------------------------------------
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
79
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
80 All trademarks and registered trademarks mentioned herein are the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
81 property of their respective owners.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
82
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
83 *******************************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
84
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
85 module dwtx.dwtxhelper.mangoicu.UCalendar;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
86
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
87 private import dwtx.dwtxhelper.mangoicu.ICU,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
88 dwtx.dwtxhelper.mangoicu.UString;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
89
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
90 public import dwtx.dwtxhelper.mangoicu.ULocale,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
91 dwtx.dwtxhelper.mangoicu.UTimeZone;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
92
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
93 /*******************************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
94
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
95 UCalendar is used for converting between a UDate object and
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
96 a set of integer fields such as Year, Month, Day,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
97 Hour, and so on. (A UDate object represents a specific instant
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
98 in time with millisecond precision. See UDate for information about
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
99 the UDate)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
100
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
101 Types of UCalendar interpret a UDate according to the rules of a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
102 specific calendar system. UCalendar supports Traditional & Gregorian.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
103
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
104 A UCalendar object can produce all the time field values needed to
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
105 implement the date-time formatting for a particular language and
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
106 calendar style (for example, Japanese-Gregorian, Japanese-Traditional).
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
107
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
108 When computing a UDate from time fields, two special circumstances
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
109 may arise: there may be insufficient information to compute the UDate
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
110 (such as only year and month but no day in the month), or there may be
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
111 inconsistent information (such as "Tuesday, July 15, 1996" -- July 15,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
112 1996 is actually a Monday).
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
113
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
114 Insufficient information. The calendar will use default information
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
115 to specify the missing fields. This may vary by calendar; for the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
116 Gregorian calendar, the default for a field is the same as that of
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
117 the start of the epoch: i.e., Year = 1970, Month = January,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
118 Date = 1, etc.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
119
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
120 Inconsistent information. If fields conflict, the calendar will give
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
121 preference to fields set more recently. For example, when determining
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
122 the day, the calendar will look for one of the following combinations
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
123 of fields. The most recent combination, as determined by the most
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
124 recently set single field, will be used.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
125
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
126 See http://oss.software.ibm.com/icu/apiref/udat_8h.html for full
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
127 details.
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
128
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
129 *******************************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
130
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
131 class UCalendar : ICU
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
132 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
133 package Handle handle;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
134
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
135 typedef double UDate;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
136
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
137 //Possible types of UCalendars
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
138 public enum Type
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
139 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
140 Traditional,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
141 Gregorian
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
142 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
143
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
144 // Possible fields in a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
145 public enum DateFields
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
146 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
147 Era,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
148 Year,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
149 Month,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
150 WeekOfYear,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
151 WeekOfMonth,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
152 Date,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
153 DayOfYear,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
154 DayOfWeek,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
155 DayOfWeekInMonth,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
156 AmPm,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
157 Hour,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
158 HourOfDay,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
159 Minute,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
160 Second,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
161 Millisecond,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
162 ZoneOffset,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
163 DstOffset,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
164 YearWoy,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
165 DowLocal,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
166 ExtendedYear,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
167 JulianDay,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
168 MillisecondsInDay,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
169 FieldCount,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
170 DayOfMonth = Date
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
171 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
172
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
173 // Possible days of the week in a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
174 public enum DaysOfWeek
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
175 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
176 Sunday = 1,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
177 Monday,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
178 Tuesday,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
179 Wednesday,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
180 Thursday,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
181 Friday,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
182 Saturday
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
183 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
184
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
185 // Possible months in a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
186 public enum Months
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
187 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
188 January,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
189 February,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
190 March,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
191 April,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
192 May,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
193 June,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
194 July,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
195 August,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
196 September,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
197 October,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
198 November,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
199 December,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
200 UnDecimber
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
201 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
202
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
203 // Possible AM/PM values in a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
204 public enum AMPMs
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
205 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
206 AM,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
207 PM
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
208 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
209
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
210 // Possible formats for a UCalendar's display name
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
211 public enum DisplayNameType
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
212 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
213 Standard,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
214 ShortStandard,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
215 DST,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
216 ShortDST
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
217 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
218
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
219 // Possible limit values for a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
220 public enum Limit
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
221 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
222 Minimum,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
223 Maximum,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
224 GreatestMinimum,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
225 LeastMaximum,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
226 ActualMinimum,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
227 ActualMaximum
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
228 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
229
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
230 // Types of UCalendar attributes
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
231 private enum Attribute
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
232 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
233 Lenient, // unused: set from UDateFormat instead
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
234 FirstDayOfWeek,
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
235 MinimalDaysInFirstWeek
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
236 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
237
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
238 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
239
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
240 Open a UCalendar. A UCalendar may be used to convert a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
241 millisecond value to a year, month, and day
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
242
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
243 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
244
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
245 this (inout UTimeZone zone, inout ULocale locale, Type type = Type.Traditional)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
246 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
247 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
248
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
249 handle = ucal_open (zone.name.ptr, zone.name.length, toString(locale.name), type, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
250 testError (e, "failed to open calendar");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
251 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
252
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
253 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
254
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
255 Internal only: Open a UCalendar with the given handle
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
256
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
257 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
258
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
259 package this (Handle handle)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
260 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
261 this.handle = handle;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
262 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
263
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
264 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
265
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
266 Close this UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
267
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
268 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
269
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
270 ~this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
271 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
272 ucal_close (handle);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
273 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
274
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
275 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
276
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
277 Set the TimeZone used by a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
278
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
279 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
280
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
281 void setTimeZone (inout UTimeZone zone)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
282 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
283 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
284
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
285 ucal_setTimeZone (handle, zone.name.ptr, zone.name.length, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
286 testError (e, "failed to set calendar time zone");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
287 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
288
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
289 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
290
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
291 Get display name of the TimeZone used by this UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
292
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
293 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
294
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
295 void getTimeZoneName (UString s, inout ULocale locale, DisplayNameType type=DisplayNameType.Standard)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
296 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
297 uint format (wchar* dst, uint length, inout ICU.UErrorCode e)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
298 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
299 return ucal_getTimeZoneDisplayName (handle, type, toString(locale.name), dst, length, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
300 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
301
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
302 s.format (&format, "failed to get time zone name");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
303 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
304
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
305 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
306
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
307 Determine if a UCalendar is currently in daylight savings
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
308 time
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
309
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
310 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
311
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
312 bool inDaylightTime ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
313 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
314 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
315
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
316 auto x = ucal_inDaylightTime (handle, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
317 testError (e, "failed to test calendar daylight time");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
318 return x != 0;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
319 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
320
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
321 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
322
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
323 Get the current date and time
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
324
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
325 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
326
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
327 UDate getNow ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
328 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
329 return ucal_getNow ();
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
330 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
331
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
332 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
333
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
334 Get a UCalendar's current time in millis. The time is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
335 represented as milliseconds from the epoch
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
336
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
337 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
338
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
339 UDate getMillis ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
340 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
341 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
342
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
343 auto x = ucal_getMillis (handle, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
344 testError (e, "failed to get time");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
345 return x;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
346 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
347
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
348 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
349
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
350 Set a UCalendar's current time in millis. The time is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
351 represented as milliseconds from the epoch
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
352
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
353 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
354
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
355 void setMillis (UDate date)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
356 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
357 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
358
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
359 ucal_setMillis (handle, date, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
360 testError (e, "failed to set time");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
361 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
362
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
363 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
364
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
365 Set a UCalendar's current date
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
366
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
367 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
368
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
369 void setDate (uint year, Months month, uint date)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
370 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
371 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
372
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
373 ucal_setDate (handle, year, month, date, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
374 testError (e, "failed to set date");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
375 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
376
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
377 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
378
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
379 Set a UCalendar's current date
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
380
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
381 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
382
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
383 void setDateTime (uint year, Months month, uint date, uint hour, uint minute, uint second)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
384 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
385 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
386
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
387 ucal_setDateTime (handle, year, month, date, hour, minute, second, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
388 testError (e, "failed to set date/time");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
389 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
390
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
391 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
392
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
393 Returns TRUE if the given Calendar object is equivalent
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
394 to this one
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
395
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
396 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
397
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
398 bool isEquivalent (UCalendar when)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
399 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
400 return ucal_equivalentTo (handle, when.handle) != 0;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
401 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
402
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
403 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
404
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
405 Compares the Calendar time
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
406
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
407 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
408
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
409 bool isEqual (UCalendar when)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
410 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
411 return (this is when || getMillis == when.getMillis);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
412 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
413
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
414 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
415
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
416 Returns true if this Calendar's current time is before
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
417 "when"'s current time
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
418
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
419 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
420
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
421 bool isBefore (UCalendar when)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
422 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
423 return (this !is when || getMillis < when.getMillis);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
424 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
425
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
426 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
427
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
428 Returns true if this Calendar's current time is after
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
429 "when"'s current time
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
430
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
431 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
432
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
433 bool isAfter (UCalendar when)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
434 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
435 return (this !is when || getMillis > when.getMillis);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
436 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
437
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
438 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
439
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
440 Add a specified signed amount to a particular field in a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
441 UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
442
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
443 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
444
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
445 void add (DateFields field, uint amount)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
446 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
447 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
448
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
449 ucal_add (handle, field, amount, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
450 testError (e, "failed to add to calendar");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
451 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
452
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
453 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
454
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
455 Add a specified signed amount to a particular field in a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
456 UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
457
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
458 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
459
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
460 void roll (DateFields field, uint amount)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
461 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
462 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
463
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
464 ucal_roll (handle, field, amount, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
465 testError (e, "failed to roll calendar");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
466 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
467
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
468 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
469
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
470 Get the current value of a field from a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
471
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
472 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
473
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
474 uint get (DateFields field)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
475 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
476 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
477
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
478 auto x = ucal_get (handle, field, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
479 testError (e, "failed to get calendar field");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
480 return x;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
481 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
482
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
483 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
484
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
485 Set the value of a field in a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
486
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
487 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
488
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
489 void set (DateFields field, uint value)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
490 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
491 ucal_set (handle, field, value);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
492 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
493
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
494 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
495
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
496 Determine if a field in a UCalendar is set
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
497
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
498 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
499
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
500 bool isSet (DateFields field)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
501 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
502 return ucal_isSet (handle, field) != 0;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
503 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
504
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
505 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
506
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
507 Clear a field in a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
508
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
509 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
510
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
511 void clearField (DateFields field)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
512 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
513 ucal_clearField (handle, field);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
514 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
515
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
516 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
517
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
518 Clear all fields in a UCalendar
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
519
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
520 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
521
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
522 void clear ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
523 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
524 ucal_clear (handle);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
525 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
526
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
527 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
528
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
529 Determine a limit for a field in a UCalendar. A limit is a
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
530 maximum or minimum value for a field
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
531
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
532 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
533
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
534 uint getLimit (DateFields field, Limit type)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
535 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
536 UErrorCode e;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
537
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
538 auto x = ucal_getLimit (handle, field, type, e);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
539 testError (e, "failed to get calendar limit");
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
540 return x;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
541 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
542
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
543 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
544
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
545 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
546
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
547 uint getDaysInFirstWeek ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
548 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
549 return ucal_getAttribute (handle, Attribute.MinimalDaysInFirstWeek);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
550 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
551
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
552 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
553
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
554 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
555
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
556 uint getFirstDayOfWeek ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
557 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
558 return ucal_getAttribute (handle, Attribute.FirstDayOfWeek);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
559 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
560
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
561 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
562
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
563 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
564
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
565 void setDaysInFirstWeek (uint value)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
566 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
567 ucal_setAttribute (handle, Attribute.MinimalDaysInFirstWeek, value);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
568 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
569
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
570 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
571
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
572 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
573
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
574 void setFirstDayOfWeek (uint value)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
575 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
576 ucal_setAttribute (handle, Attribute.FirstDayOfWeek, value);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
577 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
578
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
579
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
580 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
581
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
582 Bind the ICU functions from a shared library. This is
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
583 complicated by the issues regarding D and DLLs on the
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
584 Windows platform
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
585
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
586 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
587
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
588 private static void* library;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
589
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
590 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
591
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
592 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
593
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
594 private static extern (C)
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
595 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
596 Handle function (wchar*, uint, char*, Type, inout UErrorCode) ucal_open;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
597 void function (Handle) ucal_close;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
598 UDate function () ucal_getNow;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
599 UDate function (Handle, inout UErrorCode) ucal_getMillis;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
600 void function (Handle, UDate, inout UErrorCode) ucal_setMillis;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
601 void function (Handle, uint, uint, uint, inout UErrorCode) ucal_setDate;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
602 void function (Handle, uint, uint, uint, uint, uint, uint, inout UErrorCode) ucal_setDateTime;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
603 byte function (Handle, Handle) ucal_equivalentTo;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
604 void function (Handle, uint, uint, inout UErrorCode) ucal_add;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
605 void function (Handle, uint, uint, inout UErrorCode) ucal_roll;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
606 uint function (Handle, uint, inout UErrorCode) ucal_get;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
607 void function (Handle, uint, uint) ucal_set;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
608 byte function (Handle, uint) ucal_isSet;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
609 void function (Handle, uint) ucal_clearField;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
610 void function (Handle) ucal_clear;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
611 uint function (Handle, uint, uint, inout UErrorCode) ucal_getLimit;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
612 void function (Handle, wchar*, uint, inout UErrorCode) ucal_setTimeZone;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
613 byte function (Handle, uint) ucal_inDaylightTime;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
614 uint function (Handle, uint) ucal_getAttribute;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
615 void function (Handle, uint, uint) ucal_setAttribute;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
616 uint function (Handle, uint, char*, wchar*, uint, inout UErrorCode) ucal_getTimeZoneDisplayName;
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
617 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
618
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
619 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
620
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
621 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
622
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
623 static FunctionLoader.Bind[] targets =
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
624 [
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
625 {cast(void**) &ucal_open, "ucal_open"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
626 {cast(void**) &ucal_close, "ucal_close"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
627 {cast(void**) &ucal_getNow, "ucal_getNow"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
628 {cast(void**) &ucal_getMillis, "ucal_getMillis"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
629 {cast(void**) &ucal_setMillis, "ucal_setMillis"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
630 {cast(void**) &ucal_setDate, "ucal_setDate"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
631 {cast(void**) &ucal_setDateTime, "ucal_setDateTime"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
632 {cast(void**) &ucal_equivalentTo, "ucal_equivalentTo"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
633 {cast(void**) &ucal_add, "ucal_add"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
634 {cast(void**) &ucal_roll, "ucal_roll"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
635 {cast(void**) &ucal_get, "ucal_get"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
636 {cast(void**) &ucal_set, "ucal_set"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
637 {cast(void**) &ucal_clearField, "ucal_clearField"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
638 {cast(void**) &ucal_clear, "ucal_clear"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
639 {cast(void**) &ucal_getLimit, "ucal_getLimit"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
640 {cast(void**) &ucal_setTimeZone, "ucal_setTimeZone"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
641 {cast(void**) &ucal_inDaylightTime, "ucal_inDaylightTime"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
642 {cast(void**) &ucal_getAttribute, "ucal_getAttribute"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
643 {cast(void**) &ucal_setAttribute, "ucal_setAttribute"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
644 {cast(void**) &ucal_isSet, "ucal_isSet"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
645 {cast(void**) &ucal_getTimeZoneDisplayName, "ucal_getTimeZoneDisplayName"},
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
646 ];
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
647
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
648 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
649
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
650 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
651
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
652 static this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
653 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
654 library = FunctionLoader.bind (icuin, targets);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
655 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
656
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
657 /***********************************************************************
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
658
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
659 ***********************************************************************/
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
660
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
661 static ~this ()
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
662 {
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
663 FunctionLoader.unbind (library);
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
664 }
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
665
f05207c07a98 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 91
diff changeset
666 }