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
enum  update_type { move, roll }
enum  calendar_option_type { is_gregorian, is_dst }

Public Member Functions

virtual abstract_calendarclone () const =0
virtual void set_value (period::marks::period_mark p, int value)=0
virtual void normalize ()=0
virtual int get_value (period::marks::period_mark p, value_type v) const =0
virtual void set_time (posix_time const &p)=0
virtual posix_time get_time () const =0
virtual void set_option (calendar_option_type opt, int v)=0
virtual int get_option (calendar_option_type opt) const =0
virtual void adjust_value (period::marks::period_mark p, update_type u, int difference)=0
virtual int difference (abstract_calendar const *other, period::marks::period_mark p) const =0
virtual void set_timezone (std::string const &tz)=0
virtual std::string get_timezone () const =0
virtual bool same (abstract_calendar const *other) const =0

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

Information about calendar


Check if the calendar is Gregorian.


Check if the current time is in daylight time savings.

A way to update the value


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


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

Type that defines how to fetch the value


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


Actual minimal value for this period.


Maximal minimum value that can be for this period.


Current value of this period.


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


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


Maximal value, for Gregorian day it would be 31.

Member Function Documentation

virtual void boost::locale::abstract_calendar::adjust_value ( period::marks::period_mark  p,
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

virtual abstract_calendar* boost::locale::abstract_calendar::clone ( ) const
pure virtual

Make a polymorphic copy of the calendar

virtual int boost::locale::abstract_calendar::difference ( abstract_calendar const *  other,
period::marks::period_mark  p 
) const
pure virtual

Calculate the difference between this calendar and other in p units

virtual int boost::locale::abstract_calendar::get_option ( calendar_option_type  opt) const
pure virtual

Get option for calendar, currently only check if it is Gregorian calendar

virtual posix_time boost::locale::abstract_calendar::get_time ( ) const
pure virtual

Get current time point

virtual std::string boost::locale::abstract_calendar::get_timezone ( ) const
pure virtual

Get current time zone, empty - system one

virtual int boost::locale::abstract_calendar::get_value ( period::marks::period_mark  p,
value_type  v 
) const
pure virtual

Get specific value for period p according to a value_type v

virtual void boost::locale::abstract_calendar::normalize ( )
pure virtual

Recalculate all periods after setting them, should be called after use of set_value() function.

virtual bool boost::locale::abstract_calendar::same ( abstract_calendar const *  other) const
pure virtual

Check of two calendars have same rules

virtual void boost::locale::abstract_calendar::set_option ( calendar_option_type  opt,
int  v 
pure virtual

Set option for calendar, for future use

virtual void boost::locale::abstract_calendar::set_time ( posix_time const &  p)
pure virtual

Set current time point

virtual void boost::locale::abstract_calendar::set_timezone ( std::string const &  tz)
pure virtual

Set time zone, empty - use system

virtual void boost::locale::abstract_calendar::set_value ( period::marks::period_mark  p,
int  value 
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

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