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

namespace Gtk {

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

#region Autogenerated code
	[Obsolete]
	[StructLayout(LayoutKind.Sequential)]
	public partial struct PrintWin32Devnames : IEquatable<PrintWin32Devnames> {

		public string Driver;
		public string Device;
		public string Output;
		public int Flags;

		public static Gtk.PrintWin32Devnames Zero = new Gtk.PrintWin32Devnames ();

		public static Gtk.PrintWin32Devnames New(IntPtr raw) {
			if (raw == IntPtr.Zero)
				return Gtk.PrintWin32Devnames.Zero;
			return (Gtk.PrintWin32Devnames) Marshal.PtrToStructure (raw, typeof (Gtk.PrintWin32Devnames));
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_gtk_print_win32_devnames_free(IntPtr raw);
		static d_gtk_print_win32_devnames_free gtk_print_win32_devnames_free = FuncLoader.LoadFunction<d_gtk_print_win32_devnames_free>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gtk), "gtk_print_win32_devnames_free"));

		public void Free() {
			IntPtr this_as_native = System.Runtime.InteropServices.Marshal.AllocHGlobal (System.Runtime.InteropServices.Marshal.SizeOf<Gtk.PrintWin32Devnames>());
			System.Runtime.InteropServices.Marshal.StructureToPtr (this, this_as_native, false);
			gtk_print_win32_devnames_free(this_as_native);
			ReadNative (this_as_native, ref this);
			System.Runtime.InteropServices.Marshal.FreeHGlobal (this_as_native);
		}

		static void ReadNative (IntPtr native, ref Gtk.PrintWin32Devnames target)
		{
			target = New (native);
		}

		public bool Equals (PrintWin32Devnames other)
		{
			return true && Driver.Equals (other.Driver) && Device.Equals (other.Device) && Output.Equals (other.Output) && Flags.Equals (other.Flags);
		}

		public override bool Equals (object other)
		{
			return other is PrintWin32Devnames && Equals ((PrintWin32Devnames) other);
		}

		public override int GetHashCode ()
		{
			return this.GetType ().FullName.GetHashCode () ^ Driver.GetHashCode () ^ Device.GetHashCode () ^ Output.GetHashCode () ^ Flags.GetHashCode ();
		}

		private static GLib.GType GType {
			get { return GLib.GType.Pointer; }
		}
#endregion
	}
}
