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

namespace Gdk {

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

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

		public string Title;
		public int EventMask;
		public int X;
		public int Y;
		public int Width;
		public int Height;
		public Gdk.WindowWindowClass Wclass;
		private IntPtr _visual;
		public Gdk.Visual Visual {
			get {
				return GLib.Object.GetObject(_visual) as Gdk.Visual;
			}
			set {
				_visual = value == null ? IntPtr.Zero : value.Handle;
			}
		}
		public Gdk.WindowType WindowType;
		private IntPtr _cursor;
		public Gdk.Cursor Cursor {
			get {
				return GLib.Object.GetObject(_cursor) as Gdk.Cursor;
			}
			set {
				_cursor = value == null ? IntPtr.Zero : value.Handle;
			}
		}
		public string WmclassName;
		public string WmclassClass;
		public bool OverrideRedirect;
		public Gdk.WindowTypeHint TypeHint;

		public static Gdk.WindowAttr Zero = new Gdk.WindowAttr ();

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

		public bool Equals (WindowAttr other)
		{
			return true && Title.Equals (other.Title) && EventMask.Equals (other.EventMask) && X.Equals (other.X) && Y.Equals (other.Y) && Width.Equals (other.Width) && Height.Equals (other.Height) && Wclass.Equals (other.Wclass) && Visual.Equals (other.Visual) && WindowType.Equals (other.WindowType) && Cursor.Equals (other.Cursor) && WmclassName.Equals (other.WmclassName) && WmclassClass.Equals (other.WmclassClass) && OverrideRedirect.Equals (other.OverrideRedirect) && TypeHint.Equals (other.TypeHint);
		}

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

		public override int GetHashCode ()
		{
			return this.GetType ().FullName.GetHashCode () ^ Title.GetHashCode () ^ EventMask.GetHashCode () ^ X.GetHashCode () ^ Y.GetHashCode () ^ Width.GetHashCode () ^ Height.GetHashCode () ^ Wclass.GetHashCode () ^ Visual.GetHashCode () ^ WindowType.GetHashCode () ^ Cursor.GetHashCode () ^ WmclassName.GetHashCode () ^ WmclassClass.GetHashCode () ^ OverrideRedirect.GetHashCode () ^ TypeHint.GetHashCode ();
		}

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