COMPASSi/trunk/code/inc/DataManager/XmlSerialization/xsd/cxx/tree/date-time.hxx

1995 lines
56 KiB
C++
Raw Normal View History

2025-06-25 15:06:42 +08:00
// file : xsd/cxx/tree/date-time.hxx
// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
/**
* @file
*
* @brief Contains C++ class definitions for the XML Schema date/time types.
*
* This is an internal header and is included by the generated code. You
* normally should not include it directly.
*
*/
#ifndef XSD_CXX_TREE_DATE_TIME_HXX
#define XSD_CXX_TREE_DATE_TIME_HXX
#include <string>
#include <cstddef> // std::size_t
#include <xercesc/dom/DOMAttr.hpp>
#include <xercesc/dom/DOMElement.hpp>
#include <xsd/cxx/tree/elements.hxx>
#include <xsd/cxx/tree/istream-fwd.hxx>
namespace xsd
{
namespace cxx
{
/**
* @brief C++/Tree mapping runtime namespace.
*
* This is an internal namespace and normally should not be referenced
* directly. Instead you should use the aliases for types in this
* namespaces that are created in the generated code.
*
*/
namespace tree
{
/**
* @brief Time zone representation
*
* The %time_zone class represents an optional %time zone and
* is used as a base class for date/time types.
*
* The %time zone can negative in which case both the hours and
* minutes components should be negative.
*
* @nosubgrouping
*/
class time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Default constructor.
*
* This constructor initializes the instance to the 'not specified'
* state.
*/
time_zone ();
/**
* @brief Initialize an instance with the hours and minutes
* components.
*
* @param hours The %time zone hours component.
* @param minutes The %time zone minutes component.
*/
time_zone (short hours, short minutes);
//@}
/**
* @brief Determine if %time zone is specified.
*
* @return True if %time zone is specified, false otherwise.
*/
bool
zone_present () const;
/**
* @brief Reset the %time zone to the 'not specified' state.
*
*/
void
zone_reset ();
/**
* @brief Get the hours component of the %time zone.
*
* @return The hours component of the %time zone.
*/
short
zone_hours () const;
/**
* @brief Set the hours component of the %time zone.
*
* @param h The new hours component.
*/
void
zone_hours (short h);
/**
* @brief Get the minutes component of the %time zone.
*
* @return The minutes component of the %time zone.
*/
short
zone_minutes () const;
/**
* @brief Set the minutes component of the %time zone.
*
* @param m The new minutes component.
*/
void
zone_minutes (short m);
protected:
//@cond
template <typename C>
void
zone_parse (const C*, std::size_t);
template <typename S>
void
zone_extract (istream<S>&);
//@endcond
private:
bool present_;
short hours_;
short minutes_;
};
/**
* @brief %time_zone comparison operator.
*
* @return True if both %time zones are either not specified or
* have equal hours and minutes components, false otherwise.
*/
bool
operator== (const time_zone&, const time_zone&);
/**
* @brief %time_zone comparison operator.
*
* @return False if both %time zones are either not specified or
* have equal hours and minutes components, true otherwise.
*/
bool
operator!= (const time_zone&, const time_zone&);
/**
* @brief Class corresponding to the XML Schema gDay built-in type.
*
* The %gday class represents a day of the month with an optional
* %time zone.
*
* @nosubgrouping
*/
template <typename C, typename B>
class gday: public B, public time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize an instance with the day component.
*
* When this constructor is used, the %time zone is left
* unspecified.
*
* @param day The day component.
*/
explicit
gday (unsigned short day);
/**
* @brief Initialize an instance with the day component and %time
* zone.
*
* @param day The day component.
* @param zone_hours The %time zone hours component.
* @param zone_minutes The %time zone minutes component.
*/
gday (unsigned short day, short zone_hours, short zone_minutes);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
gday (const gday& x, flags f = 0, container* c = 0);
#ifdef XSD_CXX11
gday&
operator= (const gday&) = default;
#endif
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual gday*
_clone (flags f = 0, container* c = 0) const;
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
gday (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gday (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gday (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gday (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Get the day component.
*
* @return The day component.
*/
unsigned short
day () const;
/**
* @brief Set the day component.
*
* @param d The new day component.
*/
void
day (unsigned short d);
protected:
//@cond
gday ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
unsigned short day_;
};
/**
* @brief %gday comparison operator.
*
* @return True if the day components and %time zones are equal, false
* otherwise.
*/
template <typename C, typename B>
bool
operator== (const gday<C, B>&, const gday<C, B>&);
/**
* @brief %gday comparison operator.
*
* @return False if the day components and %time zones are equal, true
* otherwise.
*/
template <typename C, typename B>
bool
operator!= (const gday<C, B>&, const gday<C, B>&);
/**
* @brief Class corresponding to the XML Schema gMonth built-in type.
*
* The %gmonth class represents a month of the year with an optional
* %time zone.
*
* @nosubgrouping
*/
template <typename C, typename B>
class gmonth: public B, public time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize an instance with the month component.
*
* When this constructor is used, the %time zone is left
* unspecified.
*
* @param month The month component.
*/
explicit
gmonth (unsigned short month);
/**
* @brief Initialize an instance with the month component and %time
* zone.
*
* @param month The month component.
* @param zone_hours The %time zone hours component.
* @param zone_minutes The %time zone minutes component.
*/
gmonth (unsigned short month, short zone_hours, short zone_minutes);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
gmonth (const gmonth& x, flags f = 0, container* c = 0);
#ifdef XSD_CXX11
gmonth&
operator= (const gmonth&) = default;
#endif
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual gmonth*
_clone (flags f = 0, container* c = 0) const;
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
gmonth (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gmonth (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gmonth (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gmonth (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Get the month component.
*
* @return The month component.
*/
unsigned short
month () const;
/**
* @brief Set the month component.
*
* @param m The new month component.
*/
void
month (unsigned short m);
protected:
//@cond
gmonth ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
unsigned short month_;
};
/**
* @brief %gmonth comparison operator.
*
* @return True if the month components and %time zones are equal, false
* otherwise.
*/
template <typename C, typename B>
bool
operator== (const gmonth<C, B>&, const gmonth<C, B>&);
/**
* @brief %gmonth comparison operator.
*
* @return False if the month components and %time zones are equal, true
* otherwise.
*/
template <typename C, typename B>
bool
operator!= (const gmonth<C, B>&, const gmonth<C, B>&);
/**
* @brief Class corresponding to the XML Schema gYear built-in type.
*
* The %gyear class represents a year with an optional %time zone.
*
* @nosubgrouping
*/
template <typename C, typename B>
class gyear: public B, public time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize an instance with the year component.
*
* When this constructor is used, the %time zone is left
* unspecified.
*
* @param year The year component.
*/
explicit
gyear (int year);
/**
* @brief Initialize an instance with the year component and %time
* zone.
*
* @param year The year component.
* @param zone_hours The %time zone hours component.
* @param zone_minutes The %time zone minutes component.
*/
gyear (int year, short zone_hours, short zone_minutes);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
gyear (const gyear& x, flags f = 0, container* c = 0);
#ifdef XSD_CXX11
gyear&
operator= (const gyear&) = default;
#endif
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual gyear*
_clone (flags f = 0, container* c = 0) const;
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
gyear (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gyear (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gyear (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gyear (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Get the year component.
*
* @return The year component.
*/
int
year () const;
/**
* @brief Set the year component.
*
* @param y The new year component.
*/
void
year (int y);
protected:
//@cond
gyear ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
int year_;
};
/**
* @brief %gyear comparison operator.
*
* @return True if the year components and %time zones are equal, false
* otherwise.
*/
template <typename C, typename B>
bool
operator== (const gyear<C, B>&, const gyear<C, B>&);
/**
* @brief %gyear comparison operator.
*
* @return False if the year components and %time zones are equal, true
* otherwise.
*/
template <typename C, typename B>
bool
operator!= (const gyear<C, B>&, const gyear<C, B>&);
/**
* @brief Class corresponding to the XML Schema gMonthDay built-in type.
*
* The %gmonth_day class represents day and month of the year with an
* optional %time zone.
*
* @nosubgrouping
*/
template <typename C, typename B>
class gmonth_day: public B, public time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize an instance with the month and day components.
*
* When this constructor is used, the %time zone is left
* unspecified.
*
* @param month The month component.
* @param day The day component.
*/
gmonth_day (unsigned short month, unsigned short day);
/**
* @brief Initialize an instance with the month and day components
* as well as %time zone.
*
* @param month The month component.
* @param day The day component.
* @param zone_hours The %time zone hours component.
* @param zone_minutes The %time zone minutes component.
*/
gmonth_day (unsigned short month, unsigned short day,
short zone_hours, short zone_minutes);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
gmonth_day (const gmonth_day& x, flags f = 0, container* c = 0);
#ifdef XSD_CXX11
gmonth_day&
operator= (const gmonth_day&) = default;
#endif
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual gmonth_day*
_clone (flags f = 0, container* c = 0) const;
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
gmonth_day (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gmonth_day (const xercesc::DOMElement& e,
flags f = 0,
container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gmonth_day (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gmonth_day (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Get the month component.
*
* @return The month component.
*/
unsigned short
month () const;
/**
* @brief Set the month component.
*
* @param m The new month component.
*/
void
month (unsigned short m);
/**
* @brief Get the day component.
*
* @return The day component.
*/
unsigned short
day () const;
/**
* @brief Set the day component.
*
* @param d The new day component.
*/
void
day (unsigned short d);
protected:
//@cond
gmonth_day ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
unsigned short month_;
unsigned short day_;
};
/**
* @brief %gmonth_day comparison operator.
*
* @return True if the month and day components as well as %time zones
* are equal, false otherwise.
*/
template <typename C, typename B>
bool
operator== (const gmonth_day<C, B>&, const gmonth_day<C, B>&);
/**
* @brief %gmonth_day comparison operator.
*
* @return False if the month and day components as well as %time zones
* are equal, true otherwise.
*/
template <typename C, typename B>
bool
operator!= (const gmonth_day<C, B>&, const gmonth_day<C, B>&);
/**
* @brief Class corresponding to the XML Schema gYearMonth built-in
* type.
*
* The %gyear_month class represents year and month with an optional
* %time zone.
*
* @nosubgrouping
*/
template <typename C, typename B>
class gyear_month: public B, public time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize an instance with the year and month components.
*
* When this constructor is used, the %time zone is left
* unspecified.
*
* @param year The year component.
* @param month The month component.
*/
gyear_month (int year, unsigned short month);
/**
* @brief Initialize an instance with the year and month components
* as well as %time zone.
*
* @param year The year component.
* @param month The month component.
* @param zone_hours The %time zone hours component.
* @param zone_minutes The %time zone minutes component.
*/
gyear_month (int year, unsigned short month,
short zone_hours, short zone_minutes);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
gyear_month (const gyear_month& x, flags f = 0, container* c = 0);
#ifdef XSD_CXX11
gyear_month&
operator= (const gyear_month&) = default;
#endif
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual gyear_month*
_clone (flags f = 0, container* c = 0) const;
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
gyear_month (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gyear_month (const xercesc::DOMElement& e,
flags f = 0,
container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gyear_month (const xercesc::DOMAttr& a,
flags f = 0,
container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
gyear_month (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Get the year component.
*
* @return The year component.
*/
int
year () const;
/**
* @brief Set the year component.
*
* @param y The new year component.
*/
void
year (int y);
/**
* @brief Get the month component.
*
* @return The month component.
*/
unsigned short
month () const;
/**
* @brief Set the month component.
*
* @param m The new month component.
*/
void
month (unsigned short m);
protected:
//@cond
gyear_month ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
int year_;
unsigned short month_;
};
/**
* @brief %gyear_month comparison operator.
*
* @return True if the year and month components as well as %time zones
* are equal, false otherwise.
*/
template <typename C, typename B>
bool
operator== (const gyear_month<C, B>&, const gyear_month<C, B>&);
/**
* @brief %gyear_month comparison operator.
*
* @return False if the year and month components as well as %time zones
* are equal, true otherwise.
*/
template <typename C, typename B>
bool
operator!= (const gyear_month<C, B>&, const gyear_month<C, B>&);
/**
* @brief Class corresponding to the XML Schema %date built-in type.
*
* The %date class represents day, month, and year with an optional
* %time zone.
*
* @nosubgrouping
*/
template <typename C, typename B>
class date: public B, public time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize an instance with the year, month, and day
* components.
*
* When this constructor is used, the %time zone is left
* unspecified.
*
* @param year The year component.
* @param month The month component.
* @param day The day component.
*/
date (int year, unsigned short month, unsigned short day);
/**
* @brief Initialize an instance with the year, month, and day
* components as well as %time zone.
*
* @param year The year component.
* @param month The month component.
* @param day The day component.
* @param zone_hours The %time zone hours component.
* @param zone_minutes The %time zone minutes component.
*/
date (int year, unsigned short month, unsigned short day,
short zone_hours, short zone_minutes);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
date (const date& x, flags f = 0, container* c = 0);
#ifdef XSD_CXX11
date&
operator= (const date&) = default;
#endif
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual date*
_clone (flags f = 0, container* c = 0) const;
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
date (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
date (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
date (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
date (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Get the year component.
*
* @return The year component.
*/
int
year () const;
/**
* @brief Set the year component.
*
* @param y The new year component.
*/
void
year (int y);
/**
* @brief Get the month component.
*
* @return The month component.
*/
unsigned short
month () const;
/**
* @brief Set the month component.
*
* @param m The new month component.
*/
void
month (unsigned short m);
/**
* @brief Get the day component.
*
* @return The day component.
*/
unsigned short
day () const;
/**
* @brief Set the day component.
*
* @param d The new day component.
*/
void
day (unsigned short d);
protected:
//@cond
date ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
int year_;
unsigned short month_;
unsigned short day_;
};
/**
* @brief %date comparison operator.
*
* @return True if the year, month, and day components as well as %time
* zones are equal, false otherwise.
*/
template <typename C, typename B>
bool
operator== (const date<C, B>&, const date<C, B>&);
/**
* @brief %date comparison operator.
*
* @return False if the year, month, and day components as well as %time
* zones are equal, true otherwise.
*/
template <typename C, typename B>
bool
operator!= (const date<C, B>&, const date<C, B>&);
/**
* @brief Class corresponding to the XML Schema %time built-in type.
*
* The %time class represents hours, minutes, and seconds with an
* optional %time zone.
*
* @nosubgrouping
*/
template <typename C, typename B>
class time: public B, public time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize an instance with the hours, minutes, and
* seconds components.
*
* When this constructor is used, the %time zone is left
* unspecified.
*
* @param hours The hours component.
* @param minutes The minutes component.
* @param seconds The seconds component.
*/
time (unsigned short hours, unsigned short minutes, double seconds);
/**
* @brief Initialize an instance with the hours, minutes, and
* seconds components as well as %time zone.
*
* @param hours The hours component.
* @param minutes The minutes component.
* @param seconds The seconds component.
* @param zone_hours The %time zone hours component.
* @param zone_minutes The %time zone minutes component.
*/
time (unsigned short hours, unsigned short minutes, double seconds,
short zone_hours, short zone_minutes);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
time (const time& x, flags f = 0, container* c = 0);
#ifdef XSD_CXX11
time&
operator= (const time&) = default;
#endif
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual time*
_clone (flags f = 0, container* c = 0) const;
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
time (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
time (const xercesc::DOMElement& e, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
time (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
time (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Get the hours component.
*
* @return The hours component.
*/
unsigned short
hours () const;
/**
* @brief Set the hours component.
*
* @param h The new hours component.
*/
void
hours (unsigned short h);
/**
* @brief Get the minutes component.
*
* @return The minutes component.
*/
unsigned short
minutes () const;
/**
* @brief Set the minutes component.
*
* @param m The new minutes component.
*/
void
minutes (unsigned short m);
/**
* @brief Get the seconds component.
*
* @return The seconds component.
*/
double
seconds () const;
/**
* @brief Set the seconds component.
*
* @param s The new seconds component.
*/
void
seconds (double s);
protected:
//@cond
time ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
unsigned short hours_;
unsigned short minutes_;
double seconds_;
};
/**
* @brief %time comparison operator.
*
* @return True if the hours, seconds, and minutes components as well
* as %time zones are equal, false otherwise.
*/
template <typename C, typename B>
bool
operator== (const time<C, B>&, const time<C, B>&);
/**
* @brief %time comparison operator.
*
* @return False if the hours, seconds, and minutes components as well
* as %time zones are equal, true otherwise.
*/
template <typename C, typename B>
bool
operator!= (const time<C, B>&, const time<C, B>&);
/**
* @brief Class corresponding to the XML Schema dateTime built-in type.
*
* The %date_time class represents year, month, day, hours, minutes,
* and seconds with an optional %time zone.
*
* @nosubgrouping
*/
template <typename C, typename B>
class date_time: public B, public time_zone
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize an instance with the year, month, day, hours,
* minutes, and seconds components.
*
* When this constructor is used, the %time zone is left
* unspecified.
*
* @param year The year component.
* @param month The month component.
* @param day The day component.
* @param hours The hours component.
* @param minutes The minutes component.
* @param seconds The seconds component.
*/
date_time (int year, unsigned short month, unsigned short day,
unsigned short hours, unsigned short minutes,
double seconds);
/**
* @brief Initialize an instance with the year, month, day, hours,
* minutes, and seconds components as well as %time zone.
*
* @param year The year component.
* @param month The month component.
* @param day The day component.
* @param hours The hours component.
* @param minutes The minutes component.
* @param seconds The seconds component.
* @param zone_hours The %time zone hours component.
* @param zone_minutes The %time zone minutes component.
*/
date_time (int year, unsigned short month, unsigned short day,
unsigned short hours, unsigned short minutes,
double seconds, short zone_hours, short zone_minutes);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
date_time (const date_time& x, flags f = 0, container* c = 0);
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual date_time*
_clone (flags f = 0, container* c = 0) const;
#ifdef XSD_CXX11
date_time&
operator= (const date_time&) = default;
#endif
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
date_time (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
date_time (const xercesc::DOMElement& e,
flags f = 0,
container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
date_time (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
date_time (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Get the year component.
*
* @return The year component.
*/
int
year () const;
/**
* @brief Set the year component.
*
* @param y The new year component.
*/
void
year (int y);
/**
* @brief Get the month component.
*
* @return The month component.
*/
unsigned short
month () const;
/**
* @brief Set the month component.
*
* @param m The new month component.
*/
void
month (unsigned short m);
/**
* @brief Get the day component.
*
* @return The day component.
*/
unsigned short
day () const;
/**
* @brief Set the day component.
*
* @param d The new day component.
*/
void
day (unsigned short d);
/**
* @brief Get the hours component.
*
* @return The hours component.
*/
unsigned short
hours () const;
/**
* @brief Set the hours component.
*
* @param h The new hours component.
*/
void
hours (unsigned short h);
/**
* @brief Get the minutes component.
*
* @return The minutes component.
*/
unsigned short
minutes () const;
/**
* @brief Set the minutes component.
*
* @param m The new minutes component.
*/
void
minutes (unsigned short m);
/**
* @brief Get the seconds component.
*
* @return The seconds component.
*/
double
seconds () const;
/**
* @brief Set the seconds component.
*
* @param s The new seconds component.
*/
void
seconds (double s);
protected:
//@cond
date_time ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
int year_;
unsigned short month_;
unsigned short day_;
unsigned short hours_;
unsigned short minutes_;
double seconds_;
};
/**
* @brief %date_time comparison operator.
*
* @return True if the year, month, day, hours, seconds, and minutes
* components as well as %time zones are equal, false otherwise.
*/
template <typename C, typename B>
bool
operator== (const date_time<C, B>&, const date_time<C, B>&);
/**
* @brief %date_time comparison operator.
*
* @return False if the year, month, day, hours, seconds, and minutes
* components as well as %time zones are equal, true otherwise.
*/
template <typename C, typename B>
bool
operator!= (const date_time<C, B>&, const date_time<C, B>&);
/**
* @brief Class corresponding to the XML Schema %duration built-in type.
*
* The %duration class represents a potentially negative %duration in
* the form of years, months, days, hours, minutes, and seconds.
*
* @nosubgrouping
*/
template <typename C, typename B>
class duration: public B
{
public:
/**
* @name Constructors
*/
//@{
/**
* @brief Initialize a potentially negative instance with the years,
* months, days, hours, minutes, and seconds components.
*
* @param negative A boolean value indicating whether the %duration
* is negative (true) or positive (false).
* @param years The years component.
* @param months The months component.
* @param days The days component.
* @param hours The hours component.
* @param minutes The minutes component.
* @param seconds The seconds component.
*/
duration (bool negative,
unsigned int years, unsigned int months, unsigned int days,
unsigned int hours, unsigned int minutes, double seconds);
/**
* @brief Copy constructor.
*
* @param x An instance to make a copy of.
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
*
* For polymorphic object models use the _clone function instead.
*/
duration (const duration& x, flags f = 0, container* c = 0);
#ifdef XSD_CXX11
duration&
operator= (const duration&) = default;
#endif
/**
* @brief Copy the instance polymorphically.
*
* @param f Flags to create the copy with.
* @param c A pointer to the object that will contain the copy.
* @return A pointer to the dynamically allocated copy.
*
* This function ensures that the dynamic type of the instance
* is used for copying and should be used for polymorphic object
* models instead of the copy constructor.
*/
virtual duration*
_clone (flags f = 0, container* c = 0) const;
/**
* @brief Create an instance from a data representation
* stream.
*
* @param s A stream to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
template <typename S>
duration (istream<S>& s, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a DOM element.
*
* @param e A DOM element to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
duration (const xercesc::DOMElement& e,
flags f = 0,
container* c = 0);
/**
* @brief Create an instance from a DOM Attribute.
*
* @param a A DOM attribute to extract the data from.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
duration (const xercesc::DOMAttr& a, flags f = 0, container* c = 0);
/**
* @brief Create an instance from a %string fragment.
*
* @param s A %string fragment to extract the data from.
* @param e A pointer to DOM element containing the %string fragment.
* @param f Flags to create the new instance with.
* @param c A pointer to the object that will contain the new
* instance.
*/
duration (const std::basic_string<C>& s,
const xercesc::DOMElement* e,
flags f = 0,
container* c = 0);
//@}
public:
/**
* @brief Determine if %duration is negative.
*
* @return True if %duration is negative, false otherwise.
*/
bool
negative () const;
/**
* @brief Change %duration sign.
*
* @param n A boolean value indicating whether %duration is
* negative (true) or positive (false).
*/
void
negative (bool n);
/**
* @brief Get the years component.
*
* @return The years component.
*/
unsigned int
years () const;
/**
* @brief Set the years component.
*
* @param y The new years component.
*/
void
years (unsigned int y);
/**
* @brief Get the months component.
*
* @return The months component.
*/
unsigned int
months () const;
/**
* @brief Set the months component.
*
* @param m The new months component.
*/
void
months (unsigned int m);
/**
* @brief Get the days component.
*
* @return The days component.
*/
unsigned int
days () const;
/**
* @brief Set the days component.
*
* @param d The new days component.
*/
void
days (unsigned int d);
/**
* @brief Get the hours component.
*
* @return The hours component.
*/
unsigned int
hours () const;
/**
* @brief Set the hours component.
*
* @param h The new hours component.
*/
void
hours (unsigned int h);
/**
* @brief Get the minutes component.
*
* @return The minutes component.
*/
unsigned int
minutes () const;
/**
* @brief Set the minutes component.
*
* @param m The new minutes component.
*/
void
minutes (unsigned int m);
/**
* @brief Get the seconds component.
*
* @return The seconds component.
*/
double
seconds () const;
/**
* @brief Set the seconds component.
*
* @param s The new seconds component.
*/
void
seconds (double s);
protected:
//@cond
duration ();
void
parse (const std::basic_string<C>&);
//@endcond
private:
bool negative_;
unsigned int years_;
unsigned int months_;
unsigned int days_;
unsigned int hours_;
unsigned int minutes_;
double seconds_;
};
/**
* @brief %duration comparison operator.
*
* @return True if the sings as well as years, months, days, hours,
* seconds, and minutes components are equal, false otherwise.
*/
template <typename C, typename B>
bool
operator== (const duration<C, B>&, const duration<C, B>&);
/**
* @brief %duration comparison operator.
*
* @return False if the sings as well as years, months, days, hours,
* seconds, and minutes components are equal, true otherwise.
*/
template <typename C, typename B>
bool
operator!= (const duration<C, B>&, const duration<C, B>&);
}
}
}
#include <xsd/cxx/tree/date-time.ixx>
#include <xsd/cxx/tree/date-time.txx>
#endif // XSD_CXX_TREE_DATE_TIME_HXX