blob: 4cf7b9042288a476f9bf5e449141e393b624e201 (
plain)
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
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/*
** Class definitions for calendar time routines (ref: prtime.h)
*/
#if defined(_RCTIME_H)
#else
#define _RCTIME_H
#include "rcbase.h"
#include <prtime.h>
/*
** Class: RCTime (ref: prtime.h)
**
** RCTimes are objects that are intended to be used to represent calendar
** times. They maintain units internally as microseconds since the defined
** epoch (midnight, January 1, 1970, GMT). Conversions to and from external
** formats (PRExplodedTime) are available.
**
** In general, NCTimes possess normal algebretic capabilities.
*/
class PR_IMPLEMENT(RCTime): public RCBase
{
public:
typedef enum {now} Current;
RCTime(); /* leaves the object unitialized */
RCTime(Current); /* initializes to current system time */
RCTime(const RCTime&); /* copy constructor */
RCTime(const PRExplodedTime&); /* construction from exploded representation */
virtual ~RCTime();
/* assignment operators */
void operator=(const RCTime&);
void operator=(const PRExplodedTime&);
/* comparitive operators */
PRBool operator<(const RCTime&);
PRBool operator>(const RCTime&);
PRBool operator<=(const RCTime&);
PRBool operator>=(const RCTime&);
PRBool operator==(const RCTime&);
/* associative operators */
RCTime operator+(const RCTime&);
RCTime operator-(const RCTime&);
RCTime& operator+=(const RCTime&);
RCTime& operator-=(const RCTime&);
/* multiply and divide operators */
RCTime operator/(PRUint64);
RCTime operator*(PRUint64);
RCTime& operator/=(PRUint64);
RCTime& operator*=(PRUint64);
void Now(); /* assign current time to object */
private:
PRTime gmt;
public:
RCTime(PRTime); /* construct from raw PRTime */
void operator=(PRTime); /* assign from raw PRTime */
operator PRTime() const; /* extract internal representation */
}; /* RCTime */
inline RCTime::RCTime(): RCBase() { }
inline void RCTime::Now() { gmt = PR_Now(); }
inline RCTime::operator PRTime() const { return gmt; }
inline void RCTime::operator=(PRTime his) { gmt = his; }
inline void RCTime::operator=(const RCTime& his) { gmt = his.gmt; }
inline PRBool RCTime::operator<(const RCTime& his)
{ return (gmt < his.gmt) ? PR_TRUE : PR_FALSE; }
inline PRBool RCTime::operator>(const RCTime& his)
{ return (gmt > his.gmt) ? PR_TRUE : PR_FALSE; }
inline PRBool RCTime::operator<=(const RCTime& his)
{ return (gmt <= his.gmt) ? PR_TRUE : PR_FALSE; }
inline PRBool RCTime::operator>=(const RCTime& his)
{ return (gmt >= his.gmt) ? PR_TRUE : PR_FALSE; }
inline PRBool RCTime::operator==(const RCTime& his)
{ return (gmt == his.gmt) ? PR_TRUE : PR_FALSE; }
inline RCTime& RCTime::operator+=(const RCTime& his)
{ gmt += his.gmt; return *this; }
inline RCTime& RCTime::operator-=(const RCTime& his)
{ gmt -= his.gmt; return *this; }
inline RCTime& RCTime::operator/=(PRUint64 his)
{ gmt /= his; return *this; }
inline RCTime& RCTime::operator*=(PRUint64 his)
{ gmt *= his; return *this; }
#endif /* defined(_RCTIME_H) */
/* RCTime.h */
|