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 25 by douglas, 2004-07-17T16:29:02-07:00 vs.
Revision 32 by douglas, 2004-07-20T00:40:43-07:00

# Line 11 | Line 11
11  
12   #include <ctime>
13  
14 + template<int Seconds>
15 + class Period
16 + {
17 + private:
18 +        int seconds;
19 + public:
20 +        Period(int period) : seconds(period * Seconds) {}
21 +        operator int() 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); }
35 <        Stamp(int day, int month = 0, int year = 0, int hour = 0, int minute = 0,
21 <                int second = 0);
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+(Stamp stamp);
39 <        Stamp operator-(Stamp stamp);
40 <        Stamp& operator++() { *this += 1; return *this; }
27 <        Stamp operator++(int) { Stamp stamp(*this); *this += 1; return stamp; }
28 <        Stamp& operator+=(const Stamp& stamp) { *this = *this + stamp; return *this;
29 <        }
30 <        Stamp& operator--() { *this -= 1; return *this; }
31 <        Stamp operator--(int) { Stamp stamp(*this); *this -= 1; return stamp; }
32 <        Stamp& operator-=(const Stamp& stamp) { *this = *this - stamp; return *this;
33 <        }
38 >        Stamp operator+(int seconds) const { return when + seconds; }
39 >        Stamp operator-(int seconds) const { return when - seconds; }
40 >        bool operator <(const Stamp& stamp) const { return when < stamp.when; }
41   };
42  
43 + inline ext::String operator+(const Stamp& stamp, const ext::String& string)
44 + {
45 +        return ext::String(stamp) + string;
46 + }
47 +
48 + inline ext::String operator+(const ext::String& string, const Stamp& stamp)
49 + {
50 +        return string + ext::String(stamp);
51 + }
52 +
53 + inline std::ostream& operator<<(std::ostream& sout, const Stamp& stamp)
54 + {
55 +        return sout << ext::String(stamp);
56 + }
57 +
58   #endif // _Stamp_hpp_

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines