From 9abde602ecc3f20500d86c3c05fa6f98be214fa1 Mon Sep 17 00:00:00 2001 From: Stephan Sundermann Date: Wed, 9 Oct 2013 18:30:10 +0200 Subject: [PATCH] glib: add GDate, GDateTime Add GDate and GDateTime classes to glib, and map them in the generator's SymbolTable. (The types TimeZone and TimeVal are also added because the Date* types depend on them, but there is no need to map them in the generator.) Also move the TODOs of other auto-generated classes to a single TODO in the Makefile --- generator/SymbolTable.cs | 3 +- glib/Cond.cs | 2 - glib/Date.cs | 478 ++++++++++++++++++++++++++++++++++++ glib/DateTime.cs | 512 +++++++++++++++++++++++++++++++++++++++ glib/Makefile.am | 7 + glib/Marshaller.cs | 8 +- glib/Mutex.cs | 2 - glib/RecMutex.cs | 2 - glib/TimeVal.cs | 105 ++++++++ glib/TimeZone.cs | 146 +++++++++++ glib/glib.csproj | 6 +- 11 files changed, 1259 insertions(+), 12 deletions(-) create mode 100644 glib/Date.cs create mode 100644 glib/DateTime.cs create mode 100644 glib/TimeVal.cs create mode 100644 glib/TimeZone.cs diff --git a/generator/SymbolTable.cs b/generator/SymbolTable.cs index d490a02d4..408125e3f 100644 --- a/generator/SymbolTable.cs +++ b/generator/SymbolTable.cs @@ -130,6 +130,8 @@ namespace GtkSharp.Generation { AddType (new ManualGen ("GMutex", "GLib.Mutex")); AddType (new ManualGen ("GRecMutex", "GLib.RecMutex")); AddType (new ManualGen ("GCond", "GLib.Cond")); + AddType (new ManualGen ("GDateTime", "GLib.DateTime")); + AddType (new ManualGen ("GDate", "GLib.Date")); AddType (new MarshalGen ("gunichar", "char", "uint", "GLib.Marshaller.CharToGUnichar ({0})", "GLib.Marshaller.GUnicharToChar ({0})")); AddType (new MarshalGen ("time_t", "System.DateTime", "IntPtr", "GLib.Marshaller.DateTimeTotime_t ({0})", "GLib.Marshaller.time_tToDateTime ({0})")); AddType (new MarshalGen ("GString", "string", "IntPtr", "new GLib.GString ({0}).Handle", "GLib.GString.PtrToString ({0})")); @@ -138,7 +140,6 @@ namespace GtkSharp.Generation { AddType (new SimpleGen ("GDestroyNotify", "GLib.DestroyNotify", "null")); AddType (new SimpleGen ("GThread", "GLib.Thread", "null")); - // FIXME: These ought to be handled properly. AddType (new SimpleGen ("GC", "IntPtr", "IntPtr.Zero")); AddType (new SimpleGen ("GError", "IntPtr", "IntPtr.Zero")); diff --git a/glib/Cond.cs b/glib/Cond.cs index ee7c2e100..aa589a900 100644 --- a/glib/Cond.cs +++ b/glib/Cond.cs @@ -1,8 +1,6 @@ // This file was generated by the Gtk# code generator. // Any changes made will be lost if regenerated. -// TODO: generate this as part of the build instead of committing it to the repo - namespace GLib { using System; diff --git a/glib/Date.cs b/glib/Date.cs new file mode 100644 index 000000000..b7c81d917 --- /dev/null +++ b/glib/Date.cs @@ -0,0 +1,478 @@ +// This file was generated by the Gtk# code generator. +// Any changes made will be lost if regenerated. + +namespace GLib { + + using System; + using System.Collections; + using System.Collections.Generic; + using System.Runtime.InteropServices; + +#region Autogenerated code + public partial class Date : GLib.Opaque { + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_get_type(); + + public static GLib.GType GType { + get { + IntPtr raw_ret = g_date_get_type(); + GLib.GType ret = new GLib.GType(raw_ret); + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_add_days(IntPtr raw, uint n_days); + + public void AddDays(uint n_days) { + g_date_add_days(Handle, n_days); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_add_months(IntPtr raw, uint n_months); + + public void AddMonths(uint n_months) { + g_date_add_months(Handle, n_months); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_add_years(IntPtr raw, uint n_years); + + public void AddYears(uint n_years) { + g_date_add_years(Handle, n_years); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_clamp(IntPtr raw, IntPtr min_date, IntPtr max_date); + + public void Clamp(GLib.Date min_date, GLib.Date max_date) { + g_date_clamp(Handle, min_date == null ? IntPtr.Zero : min_date.Handle, max_date == null ? IntPtr.Zero : max_date.Handle); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_clear(IntPtr raw, uint n_dates); + + public void Clear(uint n_dates) { + g_date_clear(Handle, n_dates); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_compare(IntPtr raw, IntPtr rhs); + + public int Compare(GLib.Date rhs) { + int raw_ret = g_date_compare(Handle, rhs == null ? IntPtr.Zero : rhs.Handle); + int ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_days_between(IntPtr raw, IntPtr date2); + + public int DaysBetween(GLib.Date date2) { + int raw_ret = g_date_days_between(Handle, date2 == null ? IntPtr.Zero : date2.Handle); + int ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern byte g_date_get_day(IntPtr raw); + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_day(IntPtr raw, byte day); + + public byte Day { + get { + byte raw_ret = g_date_get_day(Handle); + byte ret = raw_ret; + return ret; + } + set { + g_date_set_day(Handle, value); + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern uint g_date_get_day_of_year(IntPtr raw); + + public uint DayOfYear { + get { + uint raw_ret = g_date_get_day_of_year(Handle); + uint ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern uint g_date_get_iso8601_week_of_year(IntPtr raw); + + public uint Iso8601WeekOfYear { + get { + uint raw_ret = g_date_get_iso8601_week_of_year(Handle); + uint ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern uint g_date_get_julian(IntPtr raw); + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_julian(IntPtr raw, uint julian_date); + + public uint Julian { + get { + uint raw_ret = g_date_get_julian(Handle); + uint ret = raw_ret; + return ret; + } + set { + g_date_set_julian(Handle, value); + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern uint g_date_get_monday_week_of_year(IntPtr raw); + + public uint MondayWeekOfYear { + get { + uint raw_ret = g_date_get_monday_week_of_year(Handle); + uint ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_get_month(IntPtr raw); + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_month(IntPtr raw, int month); + + public int Month { + get { + int raw_ret = g_date_get_month(Handle); + int ret = raw_ret; + return ret; + } + set { + g_date_set_month(Handle, value); + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern uint g_date_get_sunday_week_of_year(IntPtr raw); + + public uint SundayWeekOfYear { + get { + uint raw_ret = g_date_get_sunday_week_of_year(Handle); + uint ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_get_weekday(IntPtr raw); + + public int Weekday { + get { + int raw_ret = g_date_get_weekday(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern ushort g_date_get_year(IntPtr raw); + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_year(IntPtr raw, ushort year); + + public ushort Year { + get { + ushort raw_ret = g_date_get_year(Handle); + ushort ret = raw_ret; + return ret; + } + set { + g_date_set_year(Handle, value); + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_is_first_of_month(IntPtr raw); + + public bool IsFirstOfMonth { + get { + bool raw_ret = g_date_is_first_of_month(Handle); + bool ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_is_last_of_month(IntPtr raw); + + public bool IsLastOfMonth { + get { + bool raw_ret = g_date_is_last_of_month(Handle); + bool ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_order(IntPtr raw, IntPtr date2); + + public void Order(GLib.Date date2) { + g_date_order(Handle, date2 == null ? IntPtr.Zero : date2.Handle); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_dmy(IntPtr raw, byte day, int month, ushort y); + + public void SetDmy(byte day, int month, ushort y) { + g_date_set_dmy(Handle, day, month, y); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_parse(IntPtr raw, IntPtr str); + + public string Parse { + set { + IntPtr native_value = GLib.Marshaller.StringToPtrGStrdup (value); + g_date_set_parse(Handle, native_value); + GLib.Marshaller.Free (native_value); + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_time(IntPtr raw, int time_); + + [Obsolete] + public int Time { + set { + g_date_set_time(Handle, value); + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_time_t(IntPtr raw, IntPtr timet); + + public long TimeT { + set { + g_date_set_time_t(Handle, new IntPtr (value)); + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_set_time_val(IntPtr raw, IntPtr value); + + public GLib.TimeVal TimeVal { + set { + IntPtr native_value = GLib.Marshaller.StructureToPtrAlloc (value); + g_date_set_time_val(Handle, native_value); + value = GLib.TimeVal.New (native_value); + Marshal.FreeHGlobal (native_value); + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_subtract_days(IntPtr raw, uint n_days); + + public void SubtractDays(uint n_days) { + g_date_subtract_days(Handle, n_days); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_subtract_months(IntPtr raw, uint n_months); + + public void SubtractMonths(uint n_months) { + g_date_subtract_months(Handle, n_months); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_subtract_years(IntPtr raw, uint n_years); + + public void SubtractYears(uint n_years) { + g_date_subtract_years(Handle, n_years); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_to_struct_tm(IntPtr raw, IntPtr tm); + + public void ToStructTm(IntPtr tm) { + g_date_to_struct_tm(Handle, tm); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_valid(IntPtr raw); + + public bool Valid() { + bool raw_ret = g_date_valid(Handle); + bool ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern byte g_date_get_days_in_month(int month, ushort year); + + public static byte GetDaysInMonth(int month, ushort year) { + byte raw_ret = g_date_get_days_in_month(month, year); + byte ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern byte g_date_get_monday_weeks_in_year(ushort year); + + public static byte GetMondayWeeksInYear(ushort year) { + byte raw_ret = g_date_get_monday_weeks_in_year(year); + byte ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern byte g_date_get_sunday_weeks_in_year(ushort year); + + public static byte GetSundayWeeksInYear(ushort year) { + byte raw_ret = g_date_get_sunday_weeks_in_year(year); + byte ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_is_leap_year(ushort year); + + public static bool IsLeapYear(ushort year) { + bool raw_ret = g_date_is_leap_year(year); + bool ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern UIntPtr g_date_strftime(IntPtr s, UIntPtr slen, IntPtr format, IntPtr date); + + public static ulong Strftime(string s, string format, GLib.Date date) { + IntPtr native_s = GLib.Marshaller.StringToPtrGStrdup (s); + IntPtr native_format = GLib.Marshaller.StringToPtrGStrdup (format); + UIntPtr raw_ret = g_date_strftime(native_s, new UIntPtr ((ulong) System.Text.Encoding.UTF8.GetByteCount (s)), native_format, date == null ? IntPtr.Zero : date.Handle); + ulong ret = (ulong) raw_ret; + GLib.Marshaller.Free (native_s); + GLib.Marshaller.Free (native_format); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_valid_day(byte day); + + public static bool ValidDay(byte day) { + bool raw_ret = g_date_valid_day(day); + bool ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_valid_dmy(byte day, int month, ushort year); + + public static bool ValidDmy(byte day, int month, ushort year) { + bool raw_ret = g_date_valid_dmy(day, month, year); + bool ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_valid_julian(uint julian_date); + + public static bool ValidJulian(uint julian_date) { + bool raw_ret = g_date_valid_julian(julian_date); + bool ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_valid_month(int month); + + public static bool ValidMonth(int month) { + bool raw_ret = g_date_valid_month(month); + bool ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_valid_weekday(int weekday); + + public static bool ValidWeekday(int weekday) { + bool raw_ret = g_date_valid_weekday(weekday); + bool ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_valid_year(ushort year); + + public static bool ValidYear(ushort year) { + bool raw_ret = g_date_valid_year(year); + bool ret = raw_ret; + return ret; + } + + public Date(IntPtr raw) : base(raw) {} + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_new(); + + public Date () + { + Raw = g_date_new(); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_new_dmy(byte day, int month, ushort year); + + public Date (byte day, int month, ushort year) + { + Raw = g_date_new_dmy(day, month, year); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_new_julian(uint julian_day); + + public Date (uint julian_day) + { + Raw = g_date_new_julian(julian_day); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_free(IntPtr raw); + + protected override void Free (IntPtr raw) + { + g_date_free (raw); + } + + class FinalizerInfo { + IntPtr handle; + + public FinalizerInfo (IntPtr handle) + { + this.handle = handle; + } + + public bool Handler () + { + g_date_free (handle); + return false; + } + } + + ~Date () + { + if (!Owned) + return; + FinalizerInfo info = new FinalizerInfo (Handle); + GLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler)); + } + +#endregion + } +} diff --git a/glib/DateTime.cs b/glib/DateTime.cs new file mode 100644 index 000000000..f1b8dbfca --- /dev/null +++ b/glib/DateTime.cs @@ -0,0 +1,512 @@ +// This file was generated by the Gtk# code generator. +// Any changes made will be lost if regenerated. + +namespace GLib { + + using System; + using System.Collections; + using System.Collections.Generic; + using System.Runtime.InteropServices; + +#region Autogenerated code + public partial class DateTime : GLib.Opaque { + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_get_type(); + + public static GLib.GType GType { + get { + IntPtr raw_ret = g_date_time_get_type(); + GLib.GType ret = new GLib.GType(raw_ret); + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add(IntPtr raw, long timespan); + + public GLib.DateTime Add(long timespan) { + IntPtr raw_ret = g_date_time_add(Handle, timespan); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add_days(IntPtr raw, int days); + + public GLib.DateTime AddDays(int days) { + IntPtr raw_ret = g_date_time_add_days(Handle, days); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add_full(IntPtr raw, int years, int months, int days, int hours, int minutes, double seconds); + + public GLib.DateTime AddFull(int years, int months, int days, int hours, int minutes, double seconds) { + IntPtr raw_ret = g_date_time_add_full(Handle, years, months, days, hours, minutes, seconds); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add_hours(IntPtr raw, int hours); + + public GLib.DateTime AddHours(int hours) { + IntPtr raw_ret = g_date_time_add_hours(Handle, hours); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add_minutes(IntPtr raw, int minutes); + + public GLib.DateTime AddMinutes(int minutes) { + IntPtr raw_ret = g_date_time_add_minutes(Handle, minutes); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add_months(IntPtr raw, int months); + + public GLib.DateTime AddMonths(int months) { + IntPtr raw_ret = g_date_time_add_months(Handle, months); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add_seconds(IntPtr raw, double seconds); + + public GLib.DateTime AddSeconds(double seconds) { + IntPtr raw_ret = g_date_time_add_seconds(Handle, seconds); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add_weeks(IntPtr raw, int weeks); + + public GLib.DateTime AddWeeks(int weeks) { + IntPtr raw_ret = g_date_time_add_weeks(Handle, weeks); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_add_years(IntPtr raw, int years); + + public GLib.DateTime AddYears(int years) { + IntPtr raw_ret = g_date_time_add_years(Handle, years); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern long g_date_time_difference(IntPtr raw, IntPtr begin); + + public long Difference(GLib.DateTime begin) { + long raw_ret = g_date_time_difference(Handle, begin == null ? IntPtr.Zero : begin.Handle); + long ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_format(IntPtr raw, IntPtr format); + + public string Format(string format) { + IntPtr native_format = GLib.Marshaller.StringToPtrGStrdup (format); + IntPtr raw_ret = g_date_time_format(Handle, native_format); + string ret = GLib.Marshaller.PtrToStringGFree(raw_ret); + GLib.Marshaller.Free (native_format); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_day_of_month(IntPtr raw); + + public int DayOfMonth { + get { + int raw_ret = g_date_time_get_day_of_month(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_day_of_week(IntPtr raw); + + public int DayOfWeek { + get { + int raw_ret = g_date_time_get_day_of_week(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_day_of_year(IntPtr raw); + + public int DayOfYear { + get { + int raw_ret = g_date_time_get_day_of_year(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_hour(IntPtr raw); + + public int Hour { + get { + int raw_ret = g_date_time_get_hour(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_microsecond(IntPtr raw); + + public int Microsecond { + get { + int raw_ret = g_date_time_get_microsecond(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_minute(IntPtr raw); + + public int Minute { + get { + int raw_ret = g_date_time_get_minute(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_month(IntPtr raw); + + public int Month { + get { + int raw_ret = g_date_time_get_month(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_second(IntPtr raw); + + public int Second { + get { + int raw_ret = g_date_time_get_second(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern double g_date_time_get_seconds(IntPtr raw); + + public double Seconds { + get { + double raw_ret = g_date_time_get_seconds(Handle); + double ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_get_timezone_abbreviation(IntPtr raw); + + public string TimezoneAbbreviation { + get { + IntPtr raw_ret = g_date_time_get_timezone_abbreviation(Handle); + string ret = GLib.Marshaller.Utf8PtrToString (raw_ret); + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern long g_date_time_get_utc_offset(IntPtr raw); + + public long UtcOffset { + get { + long raw_ret = g_date_time_get_utc_offset(Handle); + long ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_week_numbering_year(IntPtr raw); + + public int WeekNumberingYear { + get { + int raw_ret = g_date_time_get_week_numbering_year(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_week_of_year(IntPtr raw); + + public int WeekOfYear { + get { + int raw_ret = g_date_time_get_week_of_year(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_get_year(IntPtr raw); + + public int Year { + get { + int raw_ret = g_date_time_get_year(Handle); + int ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_time_get_ymd(IntPtr raw, out int year, out int month, out int day); + + public void GetYmd(out int year, out int month, out int day) { + g_date_time_get_ymd(Handle, out year, out month, out day); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_time_is_daylight_savings(IntPtr raw); + + public bool IsDaylightSavings { + get { + bool raw_ret = g_date_time_is_daylight_savings(Handle); + bool ret = raw_ret; + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_to_local(IntPtr raw); + + public GLib.DateTime ToLocal() { + IntPtr raw_ret = g_date_time_to_local(Handle); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_time_to_timeval(IntPtr raw, IntPtr tv); + + public bool ToTimeval(GLib.TimeVal tv) { + IntPtr native_tv = GLib.Marshaller.StructureToPtrAlloc (tv); + bool raw_ret = g_date_time_to_timeval(Handle, native_tv); + bool ret = raw_ret; + tv = GLib.TimeVal.New (native_tv); + Marshal.FreeHGlobal (native_tv); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_to_timezone(IntPtr raw, IntPtr tz); + + public GLib.DateTime ToTimezone(GLib.TimeZone tz) { + IntPtr raw_ret = g_date_time_to_timezone(Handle, tz == null ? IntPtr.Zero : tz.Handle); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern long g_date_time_to_unix(IntPtr raw); + + public long ToUnix() { + long raw_ret = g_date_time_to_unix(Handle); + long ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_to_utc(IntPtr raw); + + public GLib.DateTime ToUtc() { + IntPtr raw_ret = g_date_time_to_utc(Handle); + GLib.DateTime ret = raw_ret == IntPtr.Zero ? null : (GLib.DateTime) GLib.Opaque.GetOpaque (raw_ret, typeof (GLib.DateTime), true); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_date_time_compare(IntPtr dt1, IntPtr dt2); + + public static int Compare(IntPtr dt1, IntPtr dt2) { + int raw_ret = g_date_time_compare(dt1, dt2); + int ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_date_time_equal(IntPtr dt1, IntPtr dt2); + + public static bool Equal(IntPtr dt1, IntPtr dt2) { + bool raw_ret = g_date_time_equal(dt1, dt2); + bool ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern uint g_date_time_hash(IntPtr datetime); + + public static uint Hash(IntPtr datetime) { + uint raw_ret = g_date_time_hash(datetime); + uint ret = raw_ret; + return ret; + } + + public DateTime(IntPtr raw) : base(raw) {} + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new(IntPtr tz, int year, int month, int day, int hour, int minute, double seconds); + + public DateTime (GLib.TimeZone tz, int year, int month, int day, int hour, int minute, double seconds) + { + Raw = g_date_time_new(tz == null ? IntPtr.Zero : tz.Handle, year, month, day, hour, minute, seconds); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_from_timeval_local(IntPtr tv); + + public DateTime (GLib.TimeVal tv) + { + IntPtr native_tv = GLib.Marshaller.StructureToPtrAlloc (tv); + Raw = g_date_time_new_from_timeval_local(native_tv); + tv = GLib.TimeVal.New (native_tv); + Marshal.FreeHGlobal (native_tv); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_from_timeval_utc(IntPtr tv); + + public static DateTime NewFromTimevalUtc(GLib.TimeVal tv) + { + IntPtr native_tv = GLib.Marshaller.StructureToPtrAlloc (tv); + DateTime result = new DateTime (g_date_time_new_from_timeval_utc(native_tv)); + tv = GLib.TimeVal.New (native_tv); + Marshal.FreeHGlobal (native_tv); + return result; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_from_unix_local(long t); + + public DateTime (long t) + { + Raw = g_date_time_new_from_unix_local(t); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_from_unix_utc(long t); + + public static DateTime NewFromUnixUtc(long t) + { + DateTime result = new DateTime (g_date_time_new_from_unix_utc(t)); + return result; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_local(int year, int month, int day, int hour, int minute, double seconds); + + public DateTime (int year, int month, int day, int hour, int minute, double seconds) + { + Raw = g_date_time_new_local(year, month, day, hour, minute, seconds); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_now(IntPtr tz); + + public DateTime (GLib.TimeZone tz) + { + Raw = g_date_time_new_now(tz == null ? IntPtr.Zero : tz.Handle); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_now_local(); + + public DateTime () + { + Raw = g_date_time_new_now_local(); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_now_utc(); + + public static DateTime NewNowUtc() + { + DateTime result = new DateTime (g_date_time_new_now_utc()); + return result; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_new_utc(int year, int month, int day, int hour, int minute, double seconds); + + public static DateTime NewUtc(int year, int month, int day, int hour, int minute, double seconds) + { + DateTime result = new DateTime (g_date_time_new_utc(year, month, day, hour, minute, seconds)); + return result; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_date_time_ref(IntPtr raw); + + protected override void Ref (IntPtr raw) + { + if (!Owned) { + g_date_time_ref (raw); + Owned = true; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_date_time_unref(IntPtr raw); + + protected override void Unref (IntPtr raw) + { + if (Owned) { + g_date_time_unref (raw); + Owned = false; + } + } + + class FinalizerInfo { + IntPtr handle; + + public FinalizerInfo (IntPtr handle) + { + this.handle = handle; + } + + public bool Handler () + { + g_date_time_unref (handle); + return false; + } + } + + ~DateTime () + { + if (!Owned) + return; + FinalizerInfo info = new FinalizerInfo (Handle); + GLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler)); + } + +#endregion + } +} diff --git a/glib/Makefile.am b/glib/Makefile.am index c73edaf87..6484b0d9b 100644 --- a/glib/Makefile.am +++ b/glib/Makefile.am @@ -19,10 +19,15 @@ POLICY_CONFIGS = $(addsuffix .config, $(addprefix policy., $(POLICY_VERSIONS))) references = +# TODO: auto-generate at compile time the following classes: +# Cond, Date, DateTime, Mutex, RecMutex, TimeVal, TimeZone + sources = \ Argv.cs \ ConnectBeforeAttribute.cs \ Cond.cs \ + Date.cs \ + DateTime.cs \ DefaultSignalHandlerAttribute.cs \ DestroyNotify.cs \ ExceptionManager.cs \ @@ -68,6 +73,8 @@ sources = \ Spawn.cs \ Thread.cs \ Timeout.cs \ + TimeVal.cs \ + TimeZone.cs \ ToggleRef.cs \ TypeFundamentals.cs \ TypeInitializerAttribute.cs \ diff --git a/glib/Marshaller.cs b/glib/Marshaller.cs index 49ec19086..e08792ddb 100644 --- a/glib/Marshaller.cs +++ b/glib/Marshaller.cs @@ -348,15 +348,15 @@ namespace GLib { return unmarshal_32 (array, argc); } - static DateTime local_epoch = new DateTime (1970, 1, 1, 0, 0, 0); - static int utc_offset = (int) (TimeZone.CurrentTimeZone.GetUtcOffset (DateTime.Now)).TotalSeconds; + static System.DateTime local_epoch = new System.DateTime (1970, 1, 1, 0, 0, 0); + static int utc_offset = (int) (System.TimeZone.CurrentTimeZone.GetUtcOffset (System.DateTime.Now)).TotalSeconds; - public static IntPtr DateTimeTotime_t (DateTime time) + public static IntPtr DateTimeTotime_t (System.DateTime time) { return new IntPtr (((long)time.Subtract (local_epoch).TotalSeconds) - utc_offset); } - public static DateTime time_tToDateTime (IntPtr time_t) + public static System.DateTime time_tToDateTime (IntPtr time_t) { return local_epoch.AddSeconds (time_t.ToInt64 () + utc_offset); } diff --git a/glib/Mutex.cs b/glib/Mutex.cs index 9a6d2e6db..fdd675d80 100644 --- a/glib/Mutex.cs +++ b/glib/Mutex.cs @@ -1,8 +1,6 @@ // This file was generated by the Gtk# code generator. // Any changes made will be lost if regenerated. -// TODO: generate this as part of the build instead of committing it to the repo - namespace GLib { using System; diff --git a/glib/RecMutex.cs b/glib/RecMutex.cs index a1e3bdbc5..b6d50a717 100644 --- a/glib/RecMutex.cs +++ b/glib/RecMutex.cs @@ -1,8 +1,6 @@ // This file was generated by the Gtk# code generator. // Any changes made will be lost if regenerated. -// TODO: generate this as part of the build instead of committing it to the repo - namespace GLib { using System; diff --git a/glib/TimeVal.cs b/glib/TimeVal.cs new file mode 100644 index 000000000..a439433b4 --- /dev/null +++ b/glib/TimeVal.cs @@ -0,0 +1,105 @@ +// This file was generated by the Gtk# code generator. +// Any changes made will be lost if regenerated. + +namespace GLib { + + using System; + using System.Collections; + using System.Collections.Generic; + using System.Runtime.InteropServices; + +#region Autogenerated code + [StructLayout(LayoutKind.Sequential)] + public partial struct TimeVal : IEquatable { + + private IntPtr tv_sec; + public long TvSec { + get { + return (long) tv_sec; + } + set { + tv_sec = new IntPtr (value); + } + } + private IntPtr tv_usec; + public long TvUsec { + get { + return (long) tv_usec; + } + set { + tv_usec = new IntPtr (value); + } + } + + public static GLib.TimeVal Zero = new GLib.TimeVal (); + + public static GLib.TimeVal New(IntPtr raw) { + if (raw == IntPtr.Zero) + return GLib.TimeVal.Zero; + return (GLib.TimeVal) Marshal.PtrToStructure (raw, typeof (GLib.TimeVal)); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_time_val_add(IntPtr raw, IntPtr microseconds); + + public void Add(long microseconds) { + IntPtr this_as_native = System.Runtime.InteropServices.Marshal.AllocHGlobal (System.Runtime.InteropServices.Marshal.SizeOf (this)); + System.Runtime.InteropServices.Marshal.StructureToPtr (this, this_as_native, false); + g_time_val_add(this_as_native, new IntPtr (microseconds)); + ReadNative (this_as_native, ref this); + System.Runtime.InteropServices.Marshal.FreeHGlobal (this_as_native); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_time_val_to_iso8601(IntPtr raw); + + public string ToIso8601() { + IntPtr this_as_native = System.Runtime.InteropServices.Marshal.AllocHGlobal (System.Runtime.InteropServices.Marshal.SizeOf (this)); + System.Runtime.InteropServices.Marshal.StructureToPtr (this, this_as_native, false); + IntPtr raw_ret = g_time_val_to_iso8601(this_as_native); + string ret = GLib.Marshaller.PtrToStringGFree(raw_ret); + ReadNative (this_as_native, ref this); + System.Runtime.InteropServices.Marshal.FreeHGlobal (this_as_native); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_time_val_from_iso8601(IntPtr iso_date, IntPtr time_); + + public static bool FromIso8601(string iso_date, out GLib.TimeVal time_) { + IntPtr native_iso_date = GLib.Marshaller.StringToPtrGStrdup (iso_date); + IntPtr native_time_ = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (GLib.TimeVal))); + bool raw_ret = g_time_val_from_iso8601(native_iso_date, native_time_); + bool ret = raw_ret; + GLib.Marshaller.Free (native_iso_date); + time_ = GLib.TimeVal.New (native_time_); + Marshal.FreeHGlobal (native_time_); + return ret; + } + + static void ReadNative (IntPtr native, ref GLib.TimeVal target) + { + target = New (native); + } + + public bool Equals (TimeVal other) + { + return true && TvSec.Equals (other.TvSec) && TvUsec.Equals (other.TvUsec); + } + + public override bool Equals (object other) + { + return other is TimeVal && Equals ((TimeVal) other); + } + + public override int GetHashCode () + { + return this.GetType().FullName.GetHashCode() ^ TvSec.GetHashCode () ^ TvUsec.GetHashCode (); + } + + private static GLib.GType GType { + get { return GLib.GType.Pointer; } + } +#endregion + } +} diff --git a/glib/TimeZone.cs b/glib/TimeZone.cs new file mode 100644 index 000000000..90dfd8ce0 --- /dev/null +++ b/glib/TimeZone.cs @@ -0,0 +1,146 @@ +// This file was generated by the Gtk# code generator. +// Any changes made will be lost if regenerated. + +namespace GLib { + + using System; + using System.Collections; + using System.Collections.Generic; + using System.Runtime.InteropServices; + +#region Autogenerated code + public partial class TimeZone : GLib.Opaque { + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_time_zone_get_type(); + + public static GLib.GType GType { + get { + IntPtr raw_ret = g_time_zone_get_type(); + GLib.GType ret = new GLib.GType(raw_ret); + return ret; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_time_zone_adjust_time(IntPtr raw, int type, long time_); + + public int AdjustTime(int type, long time_) { + int raw_ret = g_time_zone_adjust_time(Handle, type, time_); + int ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_time_zone_find_interval(IntPtr raw, int type, long time_); + + public int FindInterval(int type, long time_) { + int raw_ret = g_time_zone_find_interval(Handle, type, time_); + int ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_time_zone_get_abbreviation(IntPtr raw, int interval); + + public string GetAbbreviation(int interval) { + IntPtr raw_ret = g_time_zone_get_abbreviation(Handle, interval); + string ret = GLib.Marshaller.Utf8PtrToString (raw_ret); + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern int g_time_zone_get_offset(IntPtr raw, int interval); + + public int GetOffset(int interval) { + int raw_ret = g_time_zone_get_offset(Handle, interval); + int ret = raw_ret; + return ret; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern bool g_time_zone_is_dst(IntPtr raw, int interval); + + public bool IsDst(int interval) { + bool raw_ret = g_time_zone_is_dst(Handle, interval); + bool ret = raw_ret; + return ret; + } + + public TimeZone(IntPtr raw) : base(raw) {} + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_time_zone_new(IntPtr identifier); + + public TimeZone (string identifier) + { + IntPtr native_identifier = GLib.Marshaller.StringToPtrGStrdup (identifier); + Raw = g_time_zone_new(native_identifier); + GLib.Marshaller.Free (native_identifier); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_time_zone_new_local(); + + public TimeZone () + { + Raw = g_time_zone_new_local(); + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_time_zone_new_utc(); + + public static TimeZone NewUtc() + { + TimeZone result = new TimeZone (g_time_zone_new_utc()); + return result; + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern IntPtr g_time_zone_ref(IntPtr raw); + + protected override void Ref (IntPtr raw) + { + if (!Owned) { + g_time_zone_ref (raw); + Owned = true; + } + } + + [DllImport("libglib-2.0-0.dll", CallingConvention = CallingConvention.Cdecl)] + static extern void g_time_zone_unref(IntPtr raw); + + protected override void Unref (IntPtr raw) + { + if (Owned) { + g_time_zone_unref (raw); + Owned = false; + } + } + + class FinalizerInfo { + IntPtr handle; + + public FinalizerInfo (IntPtr handle) + { + this.handle = handle; + } + + public bool Handler () + { + g_time_zone_unref (handle); + return false; + } + } + + ~TimeZone () + { + if (!Owned) + return; + FinalizerInfo info = new FinalizerInfo (Handle); + GLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler)); + } + +#endregion + } +} \ No newline at end of file diff --git a/glib/glib.csproj b/glib/glib.csproj index 7e3f086ab..4a9612cd0 100644 --- a/glib/glib.csproj +++ b/glib/glib.csproj @@ -90,8 +90,12 @@ + + + + - \ No newline at end of file +