// This file was generated by the Gtk# code generator.
// Any changes made will be lost if regenerated.

namespace Gst {

	using System;
	using System.Collections;
	using System.Collections.Generic;
	using System.Runtime.InteropServices;

#region Autogenerated code
	public partial class DateTime : GLib.Opaque {

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_get_type();

		public static GLib.GType GType { 
			get {
				IntPtr raw_ret = gst_date_time_get_type();
				GLib.GType ret = new GLib.GType(raw_ret);
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_date_time_get_day(IntPtr raw);

		public int Day { 
			get {
				int raw_ret = gst_date_time_get_day(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_date_time_get_hour(IntPtr raw);

		public int Hour { 
			get {
				int raw_ret = gst_date_time_get_hour(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_date_time_get_microsecond(IntPtr raw);

		public int Microsecond { 
			get {
				int raw_ret = gst_date_time_get_microsecond(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_date_time_get_minute(IntPtr raw);

		public int Minute { 
			get {
				int raw_ret = gst_date_time_get_minute(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_date_time_get_month(IntPtr raw);

		public int Month { 
			get {
				int raw_ret = gst_date_time_get_month(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_date_time_get_second(IntPtr raw);

		public int Second { 
			get {
				int raw_ret = gst_date_time_get_second(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern float gst_date_time_get_time_zone_offset(IntPtr raw);

		public float TimeZoneOffset { 
			get {
				float raw_ret = gst_date_time_get_time_zone_offset(Handle);
				float ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern int gst_date_time_get_year(IntPtr raw);

		public int Year { 
			get {
				int raw_ret = gst_date_time_get_year(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_date_time_has_day(IntPtr raw);

		public bool HasDay { 
			get {
				bool raw_ret = gst_date_time_has_day(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_date_time_has_month(IntPtr raw);

		public bool HasMonth { 
			get {
				bool raw_ret = gst_date_time_has_month(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_date_time_has_second(IntPtr raw);

		public bool HasSecond { 
			get {
				bool raw_ret = gst_date_time_has_second(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_date_time_has_time(IntPtr raw);

		public bool HasTime { 
			get {
				bool raw_ret = gst_date_time_has_time(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern bool gst_date_time_has_year(IntPtr raw);

		public bool HasYear { 
			get {
				bool raw_ret = gst_date_time_has_year(Handle);
				bool ret = raw_ret;
				return ret;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_to_g_date_time(IntPtr raw);

		public GLib.DateTime ToGDateTime() {
			IntPtr raw_ret = gst_date_time_to_g_date_time(Handle);
			GLib.DateTime ret = new GLib.DateTime(raw_ret);
			return ret;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_to_iso8601_string(IntPtr raw);

		public string ToIso8601String() {
			IntPtr raw_ret = gst_date_time_to_iso8601_string(Handle);
			string ret = GLib.Marshaller.PtrToStringGFree(raw_ret);
			return ret;
		}

		public DateTime(IntPtr raw) : base(raw) {}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new(float tzoffset, int year, int month, int day, int hour, int minute, double seconds);

		public DateTime (float tzoffset, int year, int month, int day, int hour, int minute, double seconds) 
		{
			Raw = gst_date_time_new(tzoffset, year, month, day, hour, minute, seconds);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_from_g_date_time(IntPtr dt);

		public DateTime (GLib.DateTime dt) 
		{
			Raw = gst_date_time_new_from_g_date_time(dt == null ? IntPtr.Zero : dt.Handle);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_from_iso8601_string(IntPtr str1ng);

		public DateTime (string str1ng) 
		{
			IntPtr native_str1ng = GLib.Marshaller.StringToPtrGStrdup (str1ng);
			Raw = gst_date_time_new_from_iso8601_string(native_str1ng);
			GLib.Marshaller.Free (native_str1ng);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_from_unix_epoch_local_time(long secs);

		public DateTime (long secs) 
		{
			Raw = gst_date_time_new_from_unix_epoch_local_time(secs);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_from_unix_epoch_local_time_usecs(long usecs);

		public static DateTime NewFromUnixEpochLocalTimeUsecs(long usecs)
		{
			DateTime result = new DateTime (gst_date_time_new_from_unix_epoch_local_time_usecs(usecs));
			return result;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_from_unix_epoch_utc(long secs);

		public static DateTime NewFromUnixEpochUtc(long secs)
		{
			DateTime result = new DateTime (gst_date_time_new_from_unix_epoch_utc(secs));
			return result;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_from_unix_epoch_utc_usecs(long usecs);

		public static DateTime NewFromUnixEpochUtcUsecs(long usecs)
		{
			DateTime result = new DateTime (gst_date_time_new_from_unix_epoch_utc_usecs(usecs));
			return result;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_local_time(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 = gst_date_time_new_local_time(year, month, day, hour, minute, seconds);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_now_local_time();

		public DateTime () 
		{
			Raw = gst_date_time_new_now_local_time();
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_now_utc();

		public static DateTime NewNowUtc()
		{
			DateTime result = new DateTime (gst_date_time_new_now_utc());
			return result;
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_y(int year);

		public DateTime (int year) 
		{
			Raw = gst_date_time_new_y(year);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_ym(int year, int month);

		public DateTime (int year, int month) 
		{
			Raw = gst_date_time_new_ym(year, month);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_new_ymd(int year, int month, int day);

		public DateTime (int year, int month, int day) 
		{
			Raw = gst_date_time_new_ymd(year, month, day);
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern IntPtr gst_date_time_ref(IntPtr raw);

		protected override void Ref (IntPtr raw)
		{
			if (!Owned) {
				gst_date_time_ref (raw);
				Owned = true;
			}
		}

		[DllImport("gstreamer-1.0-0.dll", CallingConvention = CallingConvention.Cdecl)]
		static extern void gst_date_time_unref(IntPtr raw);

		protected override void Unref (IntPtr raw)
		{
			if (Owned) {
				gst_date_time_unref (raw);
				Owned = false;
			}
		}

		protected override Action<IntPtr> DisposeUnmanagedFunc {
			get {
				return gst_date_time_unref;
			}
		}


		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _abi_info = null;
		static public GLib.AbiStruct abi_info {
			get {
				if (_abi_info == null)
					_abi_info = new GLib.AbiStruct (new List<GLib.AbiField>{ 
					});

				return _abi_info;
			}
		}


		// End of the ABI representation.

#endregion
	}
}
