/usr/include/mimelib/datetime.h is in libmimelib1-dev 5:1.1.4-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 | //=============================================================================
// File: datetime.h
// Contents: Declarations for DwDateTime
// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net>
// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html
//
// Copyright (c) 1996, 1997 Douglas W. Sauder
// All rights reserved.
//
// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT,
// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER
// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT
// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS"
// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE,
// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
//
//=============================================================================
#ifndef DW_DATETIME_H
#define DW_DATETIME_H
#include <time.h>
#ifndef DW_CONFIG_H
#include <mimelib/config.h>
#endif
#ifndef DW_FIELDBDY_H
#include <mimelib/fieldbdy.h>
#endif
//=============================================================================
//+ Name DwDateTime -- Class representing an RFC-822 date-time
//+ Description
//. {\tt DwDatetime} represents a {\it date-time} as described in RFC-822
//. and RFC-1123. The parse method for {\tt DwDateTime} parses the
//. string representation to extract the year, month, day, hour, minute,
//. second, and time zone. {\tt DwDateTime} provides member functions
//. to set or get the individual components of the date-time.
//=============================================================================
// Last modified 1997-08-23
//+ Noentry ~DwDateTime mYear mMonth mDay mHour mMinute mSecond mZone
//+ Noentry sDefaultZone sIsDefaultZoneSet _PrintDebugInfo
class DW_EXPORT DwDateTime : public DwFieldBody {
public:
DwDateTime();
DwDateTime(const DwDateTime& aDateTime);
DwDateTime(const DwString& aStr, DwMessageComponent* aParent=0);
//. The first constructor is the default constructor, which assigns
//. the current date and time as reported by the operating system.
//.
//. The second constructor is the copy constructor. The parent of
//. the new {\tt DwDateTime} object is set to {\tt NULL}.
//.
//. The third constructor sets {\tt aStr} as the {\tt DwDateTime}
//. object's string representation and sets {\tt aParent} as its parent.
//. The virtual member function {\tt Parse()} should be called after
//. this constructor to extract the date and time information from the
//. string representation. Unless it is {\tt NULL}, {\tt aParent} should
//. point to an object of a class derived from {\tt DwField}.
virtual ~DwDateTime();
const DwDateTime& operator = (const DwDateTime& aDateTime);
//. This is the assignment operator, which sets this {\tt DwDateTime}
//. object to the same value as {\tt aDateTime}.
virtual void Parse();
//. This virtual function, inherited from {\tt DwMessageComponent},
//. executes the parse method for {\tt DwDateTime} objects. The parse
//. method creates or updates the broken-down representation from the
//. string representation. For {\tt DwDateTime} objects, the parse
//. method parses the string representation to extract the year,
//. month, day, hour, minute, second, and time zone.
//.
//. This function clears the is-modified flag.
virtual void Assemble();
//. This virtual function, inherited from {\tt DwMessageComponent},
//. executes the assemble method for {\tt DwDateTime} objects.
//. It should be called whenever one of the object's attributes
//. is changed in order to assemble the string representation from
//. its broken-down representation. It will be called
//. automatically for this object by the parent object's
//. {\tt Assemble()} member function if the is-modified flag is set.
//.
//. This function clears the is-modified flag.
virtual DwMessageComponent* Clone() const;
//. This virtual function, inherited from {\tt DwMessageComponent},
//. creates a new {\tt DwDateTime} on the free store that has the same
//. value as this {\tt DwDateTime} object. The basic idea is that of
//. a virtual copy constructor.
DwUint32 AsUnixTime() const;
//. Returns the date and time as a UNIX (POSIX) time, defined as the
//. number of seconds elapsed since 1 Jan 1970 00:00:00 UTC.
void FromUnixTime(DwUint32 aTime);
//. Sets the date and time from {\tt aTime}, interpreted as the number of
//. of seconds elapsed since 1 Jan 1970 00:00:00 UTC.
void FromCalendarTime(time_t aTime);
//. Sets the date and time from {\tt aTime}, which is assumed to be in a
//. format compatible with the native {\tt time()} ANSI C function.
//. For most UNIX systems, this function is the same as the function
//. {\tt FromUnixTime()}. (For efficiency, use {\tt FromUnixTime()}
//. instead of {\tt FromCalendarTime()} if possible).
DwInt32 DateAsJulianDayNum() const;
//. Returns the Julian Day Number, defined as the number of days elapsed
//. since 1 Jan 4713 BC. The JDN is calculated directly from the values
//. of the year, month, and day; time zone information is ignored.
void DateFromJulianDayNum(DwInt32 aJdn);
//. Sets the year, month, and day from {\tt aJdn}, interpreted as a Julian
//. Day Number. By definition, the JDN is the number of days elapsed
//. since 1 Jan 4713 BC. This member function ignores time zone
//. information.
DwInt32 TimeAsSecsPastMidnight() const;
//. Returns the number of seconds past midnight. The value is
//. calculated directly from the values of the hour, minute, and
//. second; time zone information is ignored.
void TimeFromSecsPastMidnight(DwInt32 aSecs);
//. Sets the hour, minute, and second from {\tt aSecs}, interpreted as the
//. number of seconds elapsed since midnight. This member function
//. ignores time zone information. The argument {\tt aSecs} should be in
//. the range 0 to 86399, inclusive.
int Year() const;
//. Returns the four digit year, e.g. 1997.
void SetYear(int aYear);
//. Sets the year from {\tt aYear}, which should be a four digit year.
int Month() const;
//. Returns the month. Values range from 1 to 12.
void SetMonth(int aMonth);
//. Sets the month from {\tt aMonth}, which should be in the range 1
//. to 12.
int Day() const;
//. Returns the day of the month. Values range from 1 to 31.
void SetDay(int aDay);
//. Sets the day of the month from {\tt aDay}.
int Hour() const;
//. Returns the hour according to the 24 hour clock.
//. Values range from 0 to 23.
void SetHour(int aHour);
//. Sets the hour from {\tt aHour} based on the 24-hour clock. {\tt aHour}
//. should be in the range 0 to 23.
int Minute() const;
//. Returns the minute. Values range from 0 to 59.
void SetMinute(int aMinute);
//. Sets the minute from {\tt aMinute}, which should be in the range 0
//. to 59.
int Second() const;
//. Returns the second. Values range from 0 to 59.
void SetSecond(int aSecond);
//. Sets the second from {\tt aSecond}, which should be in the range 0
//. to 59.
int Zone() const;
//. Returns the time zone as the diffence in minutes between local time
//. and Coordinated Universal Time (UTC or GMT).
void SetZone(int aZone);
//. Sets the time zone from {\tt aZone}, interpreted as the time difference
//. in minutes between local time and Coordinated Universal Time
//. (UTC, or GMT).
static void SetDefaultZone(int aZone);
//. Sets the default time zone. {\tt aZone} should be the time difference
//. in minutes between local time and Coordinated Universal Time
//. (UTC, or GMT). The value is used to set the time zone for any
//. objects created using the default constructor.
static DwDateTime* NewDateTime(const DwString&, DwMessageComponent*);
//. Creates a new {\tt DwDateTime} object on the free store.
//. If the static data member {\tt sNewDateTime} is {\tt NULL},
//. this member function will create a new {\tt DwDateTime}
//. and return it. Otherwise, {\tt NewDateTime()} will call
//. the user-supplied function pointed to by {\tt sNewDateTime},
//. which is assumed to return an object from a class derived from
//. {\tt DwDateTime}, and return that object.
//+ Var sNewDateTime
static DwDateTime* (*sNewDateTime)(const DwString&, DwMessageComponent*);
//. If {\tt sNewDateTime} is not {\tt NULL}, it is assumed to point to a
//. user-supplied function that returns an object from a class derived
//. from {\tt DwDateTime}.
protected:
void _FromUnixTime(DwUint32 aTime);
//. Like {\tt FromUnixTime()}, but doesn't set the is-modified flag.
void _FromCalendarTime(time_t aTime);
//. Like {\tt FromCalendarTime()}, but doesn't set the is-modified flag.
int mYear;
int mMonth;
int mDay;
int mHour;
int mMinute;
int mSecond;
int mZone;
static int sDefaultZone;
static int sIsDefaultZoneSet;
private:
static const char* const sClassName;
void Init();
//. Initialization code common to all constructors.
public:
virtual void PrintDebugInfo(std::ostream& aStrm, int aDepth=0) const;
//. This virtual function, inherited from {\tt DwMessageComponent},
//. prints debugging information about this object to {\tt aStrm}.
//.
//. This member function is available only in the debug version of
//. the library.
virtual void CheckInvariants() const;
//. Aborts if one of the invariants of the object fails. Use this
//. member function to track down bugs.
//.
//. This member function is available only in the debug version of
//. the library.
protected:
void _PrintDebugInfo(std::ostream& aStrm) const;
};
inline int DwDateTime::Year() const
{
return mYear;
}
inline int DwDateTime::Month() const
{
return mMonth;
}
inline int DwDateTime::Day() const
{
return mDay;
}
inline int DwDateTime::Hour() const
{
return mHour;
}
inline int DwDateTime::Minute() const
{
return mMinute;
}
inline int DwDateTime::Second() const
{
return mSecond;
}
inline int DwDateTime::Zone() const
{
return mZone;
}
inline void DwDateTime::SetYear(int aYear)
{
mYear = aYear;
SetModified();
}
inline void DwDateTime::SetMonth(int aMonth)
{
mMonth = aMonth;
SetModified();
}
inline void DwDateTime::SetDay(int aDay)
{
mDay = aDay;
SetModified();
}
inline void DwDateTime::SetHour(int aHour)
{
mHour = aHour;
SetModified();
}
inline void DwDateTime::SetMinute(int aMinute)
{
mMinute = aMinute;
SetModified();
}
inline void DwDateTime::SetSecond(int aSecond)
{
mSecond = aSecond;
SetModified();
}
inline void DwDateTime::SetZone(int aZone)
{
mZone = aZone;
SetModified();
}
#endif
|