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

namespace Gst.Rtsp {

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

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

		private IntPtr _message_received;
		private IntPtr _message_sent;
		private IntPtr _closed;
		private IntPtr _error;
		private IntPtr _tunnel_start;
		private IntPtr _tunnel_complete;
		private IntPtr _error_full;
		private IntPtr _tunnel_lost;
		private IntPtr _tunnel_http_response;
		[MarshalAs (UnmanagedType.ByValArray, SizeConst=3)]
		private IntPtr[] _gstGstReserved;

		public static Gst.Rtsp.RTSPWatchFuncs Zero = new Gst.Rtsp.RTSPWatchFuncs ();

		public static Gst.Rtsp.RTSPWatchFuncs New(IntPtr raw) {
			if (raw == IntPtr.Zero)
				return Gst.Rtsp.RTSPWatchFuncs.Zero;
			return (Gst.Rtsp.RTSPWatchFuncs) Marshal.PtrToStructure (raw, typeof (Gst.Rtsp.RTSPWatchFuncs));
		}

		public bool Equals (RTSPWatchFuncs other)
		{
			return true && _message_received.Equals (other._message_received) && _message_sent.Equals (other._message_sent) && _closed.Equals (other._closed) && _error.Equals (other._error) && _tunnel_start.Equals (other._tunnel_start) && _tunnel_complete.Equals (other._tunnel_complete) && _error_full.Equals (other._error_full) && _tunnel_lost.Equals (other._tunnel_lost) && _tunnel_http_response.Equals (other._tunnel_http_response);
		}

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

		public override int GetHashCode ()
		{
			return this.GetType ().FullName.GetHashCode () ^ _message_received.GetHashCode () ^ _message_sent.GetHashCode () ^ _closed.GetHashCode () ^ _error.GetHashCode () ^ _tunnel_start.GetHashCode () ^ _tunnel_complete.GetHashCode () ^ _error_full.GetHashCode () ^ _tunnel_lost.GetHashCode () ^ _tunnel_http_response.GetHashCode ();
		}

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