text: /*
   * Copyright (C) 2009-2010 Christian Hergert <chris@dronelabs.com>
   * Copyright © 2010 Codethink Limited
   *
   * This library is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of the
   * licence, or (at your option) any later version.
   *
   * This is distributed in the hope that it will be useful, but WITHOUT
   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
   * License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this library; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
   * USA.
   *
   * Authors: Christian Hergert <chris@dronelabs.com>
   *          Thiago Santos <thiago.sousa.santos@collabora.co.uk>
   *          Emmanuele Bassi <ebassi@linux.intel.com>
   *          Ryan Lortie <desrt@desrt.ca>
   */
  
  #if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
  #error "Only <glib.h> can be included directly."
  #endif
  
  #ifndef __G_DATE_TIME_H__
  #define __G_DATE_TIME_H__
  
  #include <glib/gtimezone.h>
  
  G_BEGIN_DECLS
  
  /**
   * G_TIME_SPAN_DAY:
   *
   * Evaluates to a time span of one day.
   *
   * Since: 2.26
   */
  #define G_TIME_SPAN_DAY                 (G_GINT64_CONSTANT (86400000000))
  
  /**
   * G_TIME_SPAN_HOUR:
   *
   * Evaluates to a time span of one hour.
   *
   * Since: 2.26
   */
  #define G_TIME_SPAN_HOUR                (G_GINT64_CONSTANT (3600000000))
  
  /**
   * G_TIME_SPAN_MINUTE:
   *
   * Evaluates to a time span of one minute.
   *
   * Since: 2.26
   */
  #define G_TIME_SPAN_MINUTE              (G_GINT64_CONSTANT (60000000))
  
  /**
   * G_TIME_SPAN_SECOND:
   *
   * Evaluates to a time span of one second.
   *
   * Since: 2.26
   */
  #define G_TIME_SPAN_SECOND              (G_GINT64_CONSTANT (1000000))
  
  /**
   * G_TIME_SPAN_MILLISECOND:
   *
   * Evaluates to a time span of one millisecond.
   *
   * Since: 2.26
   */
  #define G_TIME_SPAN_MILLISECOND         (G_GINT64_CONSTANT (1000))
  
  /**
   * GTimeSpan:
   *
   * A value representing an interval of time, in microseconds.
   *
   * Since: 2.26
   */
  typedef gint64 GTimeSpan;
  
  /**
   * GDateTime:
   *
   * <structname>GDateTime</structname> is an opaque structure whose members
   * cannot be accessed directly.
   *
   * Since: 2.26
   */
  typedef struct _GDateTime GDateTime;
  
  void                    g_date_time_unref                               (GDateTime      *datetime);
  GDateTime *             g_date_time_ref                                 (GDateTime      *datetime);
  
  GDateTime *             g_date_time_new_now                             (GTimeZone      *tz);
  GDateTime *             g_date_time_new_now_local                       (void);
  GDateTime *             g_date_time_new_now_utc                         (void);
  
  GDateTime *             g_date_time_new_from_unix_local                 (gint64          t);
  GDateTime *             g_date_time_new_from_unix_utc                   (gint64          t);
  
  GDateTime *             g_date_time_new_from_timeval_local              (const GTimeVal *tv);
  GDateTime *             g_date_time_new_from_timeval_utc                (const GTimeVal *tv);
  
  GDateTime *             g_date_time_new                                 (GTimeZone      *tz,
                                                                           gint            year,
                                                                           gint            month,
                                                                           gint            day,
                                                                           gint            hour,
                                                                           gint            minute,
                                                                           gdouble         seconds);
  GDateTime *             g_date_time_new_local                           (gint            year,
                                                                           gint            month,
                                                                           gint            day,
                                                                           gint            hour,
                                                                           gint            minute,
                                                                           gdouble         seconds);
  GDateTime *             g_date_time_new_utc                             (gint            year,
                                                                           gint            month,
                                                                           gint            day,
                                                                           gint            hour,
                                                                           gint            minute,
                                                                           gdouble         seconds);
  
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add                                 (GDateTime      *datetime,
                                                                           GTimeSpan       timespan);
  
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add_years                           (GDateTime      *datetime,
                                                                           gint            years);
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add_months                          (GDateTime      *datetime,
                                                                           gint            months);
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add_weeks                           (GDateTime      *datetime,
                                                                           gint            weeks);
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add_days                            (GDateTime      *datetime,
                                                                           gint            days);
  
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add_hours                           (GDateTime      *datetime,
                                                                           gint            hours);
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add_minutes                         (GDateTime      *datetime,
                                                                           gint            minutes);
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add_seconds                         (GDateTime      *datetime,
                                                                           gdouble         seconds);
  
  G_GNUC_WARN_UNUSED_RESULT
  GDateTime *             g_date_time_add_full                            (GDateTime      *datetime,
                                                                           gint            years,
                                                                           gint            months,
                                                                           gint            days,
                                                                           gint            hours,
                                                                           gint            minutes,
                                                                           gdouble         seconds);
  
  gint                    g_date_time_compare                             (gconstpointer   dt1,
                                                                           gconstpointer   dt2);
  GTimeSpan               g_date_time_difference                          (GDateTime      *end,
                                                                           GDateTime      *begin);
  guint                   g_date_time_hash                                (gconstpointer   datetime);
  gboolean                g_date_time_equal                               (gconstpointer   dt1,
                                                                           gconstpointer   dt2);
  
  void                    g_date_time_get_ymd                             (GDateTime      *datetime,
                                                                           gint           *year,
                                                                           gint           *month,
                                                                           gint           *day);
  
  gint                    g_date_time_get_year                            (GDateTime      *datetime);
  gint                    g_date_time_get_month                           (GDateTime      *datetime);
  gint                    g_date_time_get_day_of_month                    (GDateTime      *datetime);
  
  gint                    g_date_time_get_week_numbering_year             (GDateTime      *datetime);
  gint                    g_date_time_get_week_of_year                    (GDateTime      *datetime);
  gint                    g_date_time_get_day_of_week                     (GDateTime      *datetime);
  
  gint                    g_date_time_get_day_of_year                     (GDateTime      *datetime);
  
  gint                    g_date_time_get_hour                            (GDateTime      *datetime);
  gint                    g_date_time_get_minute                          (GDateTime      *datetime);
  gint                    g_date_time_get_second                          (GDateTime      *datetime);
  gint                    g_date_time_get_microsecond                     (GDateTime      *datetime);
  gdouble                 g_date_time_get_seconds                         (GDateTime      *datetime);
  
  gint64                  g_date_time_to_unix                             (GDateTime      *datetime);
  gboolean                g_date_time_to_timeval                          (GDateTime      *datetime,
                                                                           GTimeVal       *tv);
  
  GTimeSpan               g_date_time_get_utc_offset                      (GDateTime      *datetime);
  const gchar *           g_date_time_get_timezone_abbreviation           (GDateTime      *datetime);
  gboolean                g_date_time_is_daylight_savings                 (GDateTime      *datetime);
  
  GDateTime *             g_date_time_to_timezone                         (GDateTime      *datetime,
                                                                           GTimeZone      *tz);
  GDateTime *             g_date_time_to_local                            (GDateTime      *datetime);
  GDateTime *             g_date_time_to_utc                              (GDateTime      *datetime);
  
  gchar *                 g_date_time_format                              (GDateTime      *datetime,
                                                                           const gchar    *format) G_GNUC_MALLOC;
  
  G_END_DECLS
  
  #endif /* __G_DATE_TIME_H__ */
  