ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/zoe/trunk/Stamp.hpp
(Generate patch)

Comparing trunk/Stamp.hpp (file contents):
Revision 27 by douglas, 2004-07-17T19:21:04-07:00 vs.
Revision 35 by douglas, 2004-07-21T20:43:31-07:00

# Line 11 | Line 11
11  
12   #include <ctime>
13  
14 + template<int Seconds>
15 + class Period
16 + {
17 + private:
18 +        uint64_t seconds;
19 + public:
20 +        Period(uint64_t period) : seconds(period * Seconds) {}
21 +        operator uint64_t() const { return seconds; }
22 + };
23 +
24 + typedef Period<60> Minute;
25 + typedef Period<3600> Hour;
26 + typedef Period<86400> Day;
27 +
28   class Stamp
29   {
30   private:
31 +        std::time_t when;
32          std::tm stamp;
33   public:
34 <        Stamp(std::time_t now = std::time(NULL)) { gmtime_r(&now, &stamp); }
34 >        Stamp(std::time_t when = std::time(NULL)) : when(when) { gmtime_r(&when,
35 >                &stamp); }
36          Stamp(const ext::String& when);
37          operator ext::String() const;
38 <        Stamp operator+(int days) const;
39 <        Stamp operator-(int days) const { return *this + -days; }
40 <        Stamp& operator++() { *this += 1; return *this; }
25 <        Stamp operator++(int) { Stamp stamp(*this); *this += 1; return stamp; }
26 <        Stamp& operator+=(int days) { *this = *this + days; return *this; }
27 <        Stamp& operator--() { *this -= 1; return *this; }
28 <        Stamp operator--(int) { Stamp stamp(*this); *this -= 1; return stamp; }
29 <        Stamp& operator-=(int days) { *this = *this - days; return *this; }
38 >        Stamp operator+(std::time_t seconds) const { return when + seconds; }
39 >        Stamp operator-(std::time_t seconds) const { return when - seconds; }
40 >        bool operator<(const Stamp& stamp) const { return when < stamp.when; }
41   };
42  
43 + inline std::ostream& operator<<(std::ostream& sout, const Stamp& stamp) { return sout << ext::String(stamp); }
44 +
45   #endif // _Stamp_hpp_

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines