1/*
2 * Legal Notice
3 *
4 * This document and associated source code (the "Work") is a part of a
5 * benchmark specification maintained by the TPC.
6 *
7 * The TPC reserves all right, title, and interest to the Work as provided
8 * under U.S. and international laws, including without limitation all patent
9 * and trademark rights therein.
10 *
11 * No Warranty
12 *
13 * 1.1 TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, THE INFORMATION
14 * CONTAINED HEREIN IS PROVIDED "AS IS" AND WITH ALL FAULTS, AND THE
15 * AUTHORS AND DEVELOPERS OF THE WORK HEREBY DISCLAIM ALL OTHER
16 * WARRANTIES AND CONDITIONS, EITHER EXPRESS, IMPLIED OR STATUTORY,
17 * INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) IMPLIED WARRANTIES,
18 * DUTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESS FOR A PARTICULAR
19 * PURPOSE, OF ACCURACY OR COMPLETENESS OF RESPONSES, OF RESULTS, OF
20 * WORKMANLIKE EFFORT, OF LACK OF VIRUSES, AND OF LACK OF NEGLIGENCE.
21 * ALSO, THERE IS NO WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT,
22 * QUIET POSSESSION, CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT
23 * WITH REGARD TO THE WORK.
24 * 1.2 IN NO EVENT WILL ANY AUTHOR OR DEVELOPER OF THE WORK BE LIABLE TO
25 * ANY OTHER PARTY FOR ANY DAMAGES, INCLUDING BUT NOT LIMITED TO THE
26 * COST OF PROCURING SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS
27 * OF USE, LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, DIRECT,
28 * INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER CONTRACT, TORT, WARRANTY,
29 * OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY OTHER AGREEMENT
30 * RELATING TO THE WORK, WHETHER OR NOT SUCH AUTHOR OR DEVELOPER HAD
31 * ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.
32 *
33 * Contributors
34 * - Doug Johnson
35 */
36
37/******************************************************************************
38 * Description: This class provides functionality for managing the
39 * relationship between time and locations in a wheel.
40 ******************************************************************************/
41
42#ifndef WHEEL_TIME_H
43#define WHEEL_TIME_H
44
45#include "utilities/EGenUtilities_stdafx.h"
46#include "Wheel.h"
47
48namespace TPCE {
49
50class CWheelTime {
51
52private:
53 PWheelConfig m_pWheelConfig; // Pointer to configuration info for the wheel
54 INT32 m_Cycles; // Number of completed cycles so far
55 INT32 m_Index; // Index into the current cycle
56
57public:
58 CWheelTime(PWheelConfig pWheelConfig);
59 CWheelTime(PWheelConfig pWheelConfig, INT32 cycles, INT32 index);
60 CWheelTime(PWheelConfig pWheelConfig, CDateTime &Base, CDateTime &Now, INT32 Offset);
61 ~CWheelTime(void);
62
63 inline INT32 Cycles(void) {
64 return m_Cycles;
65 };
66 inline INT32 Index(void) {
67 return m_Index;
68 };
69
70 void Add(INT32 Interval);
71
72 INT32 Offset(const CWheelTime &Time);
73
74 void Set(INT32 cycles, INT32 index);
75 void Set(CDateTime &Base, CDateTime &Now);
76 void Set(CDateTime *pBase, CDateTime *pNow);
77
78 CWheelTime &operator=(const CWheelTime &Time);
79 bool operator<(const CWheelTime &Time);
80 CWheelTime &operator+=(const INT32 &Interval);
81 CWheelTime operator++(INT32);
82};
83
84} // namespace TPCE
85
86#endif // WHEEL_TIME_H
87