This class defines generic calendar class, it is used by date_time and calendar objects internally. More...
#include <date_time_facet.hpp>
Public Types | |
enum | value_type { absolute_minimum, actual_minimum, greatest_minimum, current, least_maximum, actual_maximum, absolute_maximum } |
Type that defines how to fetch the value. More... | |
enum | update_type { move, roll } |
A way to update the value. More... | |
enum | calendar_option_type { is_gregorian, is_dst } |
Information about calendar. More... | |
Public Member Functions | |
virtual abstract_calendar * | clone () const =0 |
Make a polymorphic copy of the calendar. More... | |
virtual void | set_value (period::marks::period_mark p, int value)=0 |
Set specific value for period p, note not all values are settable. More... | |
virtual void | normalize ()=0 |
Recalculate all periods after setting them, should be called after use of set_value() function. More... | |
virtual int | get_value (period::marks::period_mark p, value_type v) const =0 |
Get specific value for period p according to a value_type v. More... | |
virtual void | set_time (posix_time const &p)=0 |
Set current time point. More... | |
virtual posix_time | get_time () const =0 |
Get current time point. More... | |
virtual void | set_option (calendar_option_type opt, int v)=0 |
Set option for calendar, for future use. More... | |
virtual int | get_option (calendar_option_type opt) const =0 |
Get option for calendar, currently only check if it is Gregorian calendar. More... | |
virtual void | adjust_value (period::marks::period_mark p, update_type u, int difference)=0 |
Adjust period's p value by difference items using a update_type u. More... | |
virtual int | difference (abstract_calendar const *other, period::marks::period_mark p) const =0 |
Calculate the difference between this calendar and other in p units. More... | |
virtual void | set_timezone (std::string const &tz)=0 |
Set time zone, empty - use system. More... | |
virtual std::string | get_timezone () const =0 |
Get current time zone, empty - system one. More... | |
virtual bool | same (abstract_calendar const *other) const =0 |
Check of two calendars have same rules. More... | |
virtual | ~abstract_calendar () |
This class defines generic calendar class, it is used by date_time and calendar objects internally.
It is less useful for end users, but it is build for localization backend implementation
Type that defines how to fetch the value.
|
inlinevirtual |
|
pure virtual |
Adjust period's p value by difference items using a update_type u.
Note: not all values are adjustable
|
pure virtual |
Make a polymorphic copy of the calendar.
|
pure virtual |
Calculate the difference between this calendar and other in p units.
|
pure virtual |
Get option for calendar, currently only check if it is Gregorian calendar.
|
pure virtual |
Get current time point.
|
pure virtual |
Get current time zone, empty - system one.
|
pure virtual |
Get specific value for period p according to a value_type v.
|
pure virtual |
Recalculate all periods after setting them, should be called after use of set_value() function.
|
pure virtual |
Check of two calendars have same rules.
|
pure virtual |
Set option for calendar, for future use.
|
pure virtual |
Set current time point.
|
pure virtual |
Set time zone, empty - use system.
|
pure virtual |
Set specific value for period p, note not all values are settable.
After call of set_value you may want to call normalize() function to make sure vall periods are updated, if you set sereral fields that are part of single date/time representation you should call set_value several times and then call normalize().
If normalize() is not called after set_value, the behavior is undefined