1#pragma once
2
3#include <basis/seadTypes.h>
4
5namespace sead
6{
7/// A CalendarSpan represents a duration in terms of days, hours, minutes and seconds.
8class CalendarSpan
9{
10public:
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
46private:
47 Day mDay;
48 Hour mHour;
49 Minute mMinute;
50 Second mSecond;
51};
52
53} // namespace sead
54