01: #include <iostream>
02: #include <iomanip>
03: 
04: using namespace std;
05: 
06: #include "ccc_time.cpp"
07: 
08: /**
09:    Compute the number of seconds between two points in time.
10:    @param a a point in time
11:    @param b another point in time
12:    @return the number of seconds that a is away from b
13: */
14: int operator-(Time a, Time b)
15: {  
16:    return a.seconds_from(b);
17: }
18: 
19: /**
20:    Compute a point in time that is some number of seconds away.
21:    @param a a point in time
22:    @param sec the seconds to add
23:    @return a point in time that is sec seconds away from a
24: */
25: Time operator+(Time a, int sec)
26: {  
27:    Time r = a;
28:    r.add_seconds(sec);
29:    return r;
30: }
31: 
32: /**
33:    Compare two points in time.
34:    @param a a point in time
35:    @param b another point in time
36:    @return true if they are the same
37: */
38: bool operator==(Time a, Time b)
39: {  
40:    return a.seconds_from(b) == 0;
41: }
42: 
43: /**
44:    Compare two points in time.
45:    @param a a point in time
46:    @param b another point in time
47:    @return true if they are the different
48: */
49: bool operator!=(Time a, Time b)
50: {  
51:    return a.seconds_from(b) != 0;
52: }
53: 
54: /**
55:    Print a Time object
56:    @param out an output stream
57:    @param a a point in time
58:    @return out
59: */
60: ostream& operator<<(ostream& out, Time a)
61: {  
62:    out << a.get_hours() << ":"
63:       << setw(2) << setfill('0') 
64:       << a.get_minutes() << ":"
65:       << setw(2) << a.get_seconds() << setfill(' ');
66:    return out;
67: } 
68: 
69: int main()
70: {  
71:    Time now;
72:    cout << "Now it is " << now << "\n";
73:    Time later = now + 1000;
74:    cout << "A thousand seconds later it is " << later << "\n";
75:    Time now2;
76:    if (now == now2)
77:       cout << "It still is " << now2 << "\n";
78:    if (now != now2)
79:       cout << "It is already " << now2 << "\n";
80:    cout << "Another " << later - now2 
81:       << " seconds until " << later << "\n";
82:    return 0;
83: }
84: