| 1 | #pragma once |
| 2 | |
| 3 | #include <basis/seadTypes.h> |
| 4 | |
| 5 | namespace sead |
| 6 | { |
| 7 | /// A CalendarSpan represents a duration in terms of days, hours, minutes and seconds. |
| 8 | class CalendarSpan |
| 9 | { |
| 10 | public: |
| 11 | #define SEAD_CALENDARSPAN_MAKE_CLASS(NAME) \ |
| 12 | class NAME \ |
| 13 | { \ |
| 14 | public: \ |
| 15 | NAME(s32 v) : mValue(v) {} \ |
| 16 | s32 getValue() const { return mValue; } \ |
| 17 | void setValue(s32 v) { mValue = v; } \ |
| 18 | \ |
| 19 | private: \ |
| 20 | s32 mValue; \ |
| 21 | }; |
| 22 | |
| 23 | SEAD_CALENDARSPAN_MAKE_CLASS(Day) |
| 24 | SEAD_CALENDARSPAN_MAKE_CLASS(Hour) |
| 25 | SEAD_CALENDARSPAN_MAKE_CLASS(Minute) |
| 26 | SEAD_CALENDARSPAN_MAKE_CLASS(Second) |
| 27 | #undef SEAD_CALENDARSPAN_MAKE_CLASS |
| 28 | |
| 29 | CalendarSpan() : mDay(0), mHour(0), mMinute(0), mSecond(0) {} |
| 30 | |
| 31 | CalendarSpan(const Day& day, const Hour& hour, const Minute& minute, const Second& second) |
| 32 | : mDay(day), mHour(hour), mMinute(minute), mSecond(second) |
| 33 | { |
| 34 | } |
| 35 | |
| 36 | s32 getDays() const { return mDay.getValue(); } |
| 37 | s32 getHours() const { return mHour.getValue(); } |
| 38 | s32 getMinutes() const { return mMinute.getValue(); } |
| 39 | s32 getSeconds() const { return mSecond.getValue(); } |
| 40 | |
| 41 | void setDays(s32 days) { mDay.setValue(days); } |
| 42 | void setHours(s32 hours) { mHour.setValue(hours); } |
| 43 | void setMinutes(s32 minutes) { mMinute.setValue(minutes); } |
| 44 | void setSeconds(s32 seconds) { mSecond.setValue(seconds); } |
| 45 | |
| 46 | private: |
| 47 | Day mDay; |
| 48 | Hour mHour; |
| 49 | Minute mMinute; |
| 50 | Second mSecond; |
| 51 | }; |
| 52 | |
| 53 | } // namespace sead |
| 54 | |