/* Copyright (C) 2011 The glibmm Development Team * * 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 License, or (at your option) any later version. * * This library 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, see . */ _DEFS(glibmm,glib) #include #include #include #include #ifndef DOXYGEN_SHOULD_SKIP_THIS typedef struct _GTimeZone GTimeZone; #endif namespace Glib { _WRAP_ENUM(TimeType, GTimeType, NO_GTYPE, decl_prefix GLIBMM_API) /** TimeZone - A structure representing a time zone. * TimeZone is a structure that represents a time zone, at no particular point * in time. It is immutable. * * A time zone contains a number of intervals. Each interval has an * abbreviation to describe it, an offet to UTC and a flag indicating if the * daylight savings time is in effect during that interval. A time zone always * has at least one interval -- interval 0. * * Every UTC time is contained within exactly one interval, but a given local * time may be contained within zero, one or two intervals (due to * incontinuities associated with daylight savings time). * * An interval may refer to a specific period of time (eg: the duration of * daylight savings time during 2010) or it may refer to many periods of time * that share the same properties (eg: all periods of daylight savings time). * It is also possible (usually for political reasons) that some properties * (like the abbreviation) change between intervals without other properties * changing. * @newin{2,30} */ class GLIBMM_API TimeZone { // GTimeZone is refcounted, but Glib::TimeZone is not. // GTimeZone is immutable. Therefore, there is no problem having several // Glib::TimeZone instances wrap the same GTimeZone, and it's easier to use // Glib::TimeZone without Glib::RefPtr. _CLASS_BOXEDTYPE(TimeZone, GTimeZone, NONE, g_time_zone_ref, g_time_zone_unref, GLIBMM_API) _IGNORE(g_time_zone_ref, g_time_zone_unref) public: _WRAP_METHOD(static TimeZone create(const Glib::ustring& identifier), g_time_zone_new, deprecated "Use create_identifier() instead.") _WRAP_METHOD(static TimeZone create_identifier(const Glib::ustring& identifier), g_time_zone_new_identifier, newin "2,70") _WRAP_METHOD(static TimeZone create_local(), g_time_zone_new_local) _WRAP_METHOD(static TimeZone create_utc(), g_time_zone_new_utc) /** Returns true if the %TimeZone object is valid. * This will return false, for instance, if create_identifier() * has been called with an @a identifier that cannot be parsed or loaded. * @newin{2,70} */ explicit operator bool() const; _WRAP_METHOD(int find_interval(TimeType type, gint64 time) const, g_time_zone_find_interval) _WRAP_METHOD(int adjust_time(TimeType type, gint64& time) const, g_time_zone_adjust_time) _WRAP_METHOD(Glib::ustring get_abbreviation(int interval) const, g_time_zone_get_abbreviation) _WRAP_METHOD(gint32 get_offset(int interval) const, g_time_zone_get_offset) _WRAP_METHOD(bool is_dst(int interval) const, g_time_zone_is_dst) _WRAP_METHOD(Glib::ustring get_identifier() const, g_time_zone_get_identifier, newin "2,60") }; } // namespace Glib