    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: