// 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;
	using static GLib.AbiStructExtension;

#region Autogenerated code
	public partial class ProxyAddress : GLib.InetSocketAddress {

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

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_g_proxy_address_new(IntPtr inetaddr, ushort port, IntPtr protocol, IntPtr dest_hostname, ushort dest_port, IntPtr username, IntPtr password);
		static d_g_proxy_address_new g_proxy_address_new = FuncLoader.LoadFunction<d_g_proxy_address_new>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_new"));

		public ProxyAddress (GLib.InetAddress inetaddr, ushort port, string protocol, string dest_hostname, ushort dest_port, string username, string password) : base (IntPtr.Zero)
		{
			if (GetType () != typeof (ProxyAddress)) {
				var vals = new List<GLib.Value> ();
				var names = new List<string> ();
				if (inetaddr != null) {
					names.Add ("port");
					vals.Add (new GLib.Value (port));
				}
				names.Add ("protocol");
				vals.Add (new GLib.Value (protocol));
				names.Add ("username");
				vals.Add (new GLib.Value (username));
				names.Add ("password");
				vals.Add (new GLib.Value (password));
				CreateNativeObject (names.ToArray (), vals.ToArray ());
				return;
			}
			IntPtr native_protocol = GLib.Marshaller.StringToPtrGStrdup (protocol);
			IntPtr native_dest_hostname = GLib.Marshaller.StringToPtrGStrdup (dest_hostname);
			IntPtr native_username = GLib.Marshaller.StringToPtrGStrdup (username);
			IntPtr native_password = GLib.Marshaller.StringToPtrGStrdup (password);
			Raw = g_proxy_address_new(inetaddr == null ? IntPtr.Zero : inetaddr.Handle, port, native_protocol, native_dest_hostname, dest_port, native_username, native_password);
			GLib.Marshaller.Free (native_protocol);
			GLib.Marshaller.Free (native_dest_hostname);
			GLib.Marshaller.Free (native_username);
			GLib.Marshaller.Free (native_password);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_g_proxy_address_get_protocol(IntPtr raw);
		static d_g_proxy_address_get_protocol g_proxy_address_get_protocol = FuncLoader.LoadFunction<d_g_proxy_address_get_protocol>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_get_protocol"));

		[GLib.Property ("protocol")]
		public string Protocol {
			get  {
				IntPtr raw_ret = g_proxy_address_get_protocol(Handle);
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_g_proxy_address_get_username(IntPtr raw);
		static d_g_proxy_address_get_username g_proxy_address_get_username = FuncLoader.LoadFunction<d_g_proxy_address_get_username>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_get_username"));

		[GLib.Property ("username")]
		public string Username {
			get  {
				IntPtr raw_ret = g_proxy_address_get_username(Handle);
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_g_proxy_address_get_password(IntPtr raw);
		static d_g_proxy_address_get_password g_proxy_address_get_password = FuncLoader.LoadFunction<d_g_proxy_address_get_password>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_get_password"));

		[GLib.Property ("password")]
		public string Password {
			get  {
				IntPtr raw_ret = g_proxy_address_get_password(Handle);
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_g_proxy_address_get_destination_protocol(IntPtr raw);
		static d_g_proxy_address_get_destination_protocol g_proxy_address_get_destination_protocol = FuncLoader.LoadFunction<d_g_proxy_address_get_destination_protocol>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_get_destination_protocol"));

		[GLib.Property ("destination-protocol")]
		public string DestinationProtocol {
			get  {
				IntPtr raw_ret = g_proxy_address_get_destination_protocol(Handle);
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_g_proxy_address_get_destination_hostname(IntPtr raw);
		static d_g_proxy_address_get_destination_hostname g_proxy_address_get_destination_hostname = FuncLoader.LoadFunction<d_g_proxy_address_get_destination_hostname>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_get_destination_hostname"));

		[GLib.Property ("destination-hostname")]
		public string DestinationHostname {
			get  {
				IntPtr raw_ret = g_proxy_address_get_destination_hostname(Handle);
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate ushort d_g_proxy_address_get_destination_port(IntPtr raw);
		static d_g_proxy_address_get_destination_port g_proxy_address_get_destination_port = FuncLoader.LoadFunction<d_g_proxy_address_get_destination_port>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_get_destination_port"));

		[GLib.Property ("destination-port")]
		public ushort DestinationPort {
			get  {
				ushort raw_ret = g_proxy_address_get_destination_port(Handle);
				ushort ret = raw_ret;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_g_proxy_address_get_uri(IntPtr raw);
		static d_g_proxy_address_get_uri g_proxy_address_get_uri = FuncLoader.LoadFunction<d_g_proxy_address_get_uri>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_get_uri"));

		[GLib.Property ("uri")]
		public string Uri {
			get  {
				IntPtr raw_ret = g_proxy_address_get_uri(Handle);
				string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
				return ret;
			}
		}


		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _class_abi = null;
		static public unsafe new GLib.AbiStruct class_abi {
			get {
				if (_class_abi == null)
					_class_abi = new GLib.AbiStruct (GLib.InetSocketAddress.class_abi.Fields);

				return _class_abi;
			}
		}


		// End of the ABI representation.

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_g_proxy_address_get_type();
		static d_g_proxy_address_get_type g_proxy_address_get_type = FuncLoader.LoadFunction<d_g_proxy_address_get_type>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Gio), "g_proxy_address_get_type"));

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


		// Internal representation of the wrapped structure ABI.
		static GLib.AbiStruct _abi_info = null;
		static public unsafe new GLib.AbiStruct abi_info {
			get {
				if (_abi_info == null)
					_abi_info = new GLib.AbiStruct (new List<GLib.AbiField>{ 
						new GLib.AbiField("priv"
							, GLib.InetSocketAddress.abi_info.Fields
							, (uint) sizeof( IntPtr ) // priv
							, null
							, null
							, (uint) sizeof(IntPtr)
							, 0
							),
					});

				return _abi_info;
			}
		}


		// End of the ABI representation.

#endregion
	}
}
