Boost.Locale
boost::locale::abstract_calendar Class Referenceabstract

#include <boost/locale/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_calendarclone () const =0
 Make a polymorphic copy of the calendar.
 
virtual void set_value (period::marks::period_mark m, int value)=0
 
virtual void normalize ()=0
 Recalculate all periods after setting them, should be called after use of set_value() function.
 
virtual int get_value (period::marks::period_mark m, value_type v) const =0
 Get specific value for period p according to a value_type v.
 
virtual void set_time (const posix_time &p)=0
 Set current time point.
 
virtual posix_time get_time () const =0
 Get current time point.
 
virtual double get_time_ms () const =0
 Get current time since epoch in milliseconds.
 
virtual void set_option (calendar_option_type opt, int v)=0
 Set option for calendar, for future use.
 
virtual int get_option (calendar_option_type opt) const =0
 Get option for calendar, currently only check if it is Gregorian calendar.
 
virtual void adjust_value (period::marks::period_mark m, update_type u, int difference)=0
 
virtual int difference (const abstract_calendar &other, period::marks::period_mark m) const =0
 Calculate the difference between this calendar and other in p units.
 
virtual void set_timezone (const std::string &tz)=0
 Set time zone, empty - use system.
 
virtual std::string get_timezone () const =0
 Get current time zone, empty - system one.
 
virtual bool same (const abstract_calendar *other) const =0
 Check of two calendars have same rules.
 

Detailed Description

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

Member Enumeration Documentation

◆ calendar_option_type

Information about calendar.

Enumerator
is_gregorian 

Check if the calendar is Gregorian.

is_dst 

Check if the current time is in daylight time savings.

◆ update_type

A way to update the value.

Enumerator
move 

Change the value up or down effecting others for example 1990-12-31 + 1 day = 1991-01-01.

roll 

Change the value up or down not effecting others for example 1990-12-31 + 1 day = 1990-12-01.

◆ value_type

Type that defines how to fetch the value.

Enumerator
absolute_minimum 

Absolute possible minimum for the value, for example for day is 1.

actual_minimum 

Actual minimal value for this period.

greatest_minimum 

Maximal minimum value that can be for this period.

current 

Current value of this period.

least_maximum 

The last maximal value for this period, For example for Gregorian calendar day it is 28

actual_maximum 

Actual maximum, for it can be 28, 29, 30, 31 for day according to current month.

absolute_maximum 

Maximal value, for Gregorian day it would be 31.

Member Function Documentation

◆ adjust_value()

virtual void boost::locale::abstract_calendar::adjust_value ( period::marks::period_mark  m,
update_type  u,
int  difference 
)
pure virtual

Adjust period's p value by difference items using a update_type u. Note: not all values are adjustable

◆ set_value()

virtual void boost::locale::abstract_calendar::set_value ( period::marks::period_mark  m,
int  value 
)
pure virtual

Set specific value for period p, note not all values are settable.

After calling set_value you may want to call normalize() function to make sure all periods are updated, if you set several fields that are part of a 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


The documentation for this class was generated from the following file: