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

namespace Atk {

	using System;
	using System.Runtime.InteropServices;

#region Autogenerated code
	public partial class TableAdapter : GLib.GInterfaceAdapter, Atk.ITable {

		[StructLayout (LayoutKind.Sequential)]
		struct AtkTableIface {
			public RefAtNativeDelegate RefAt;
			public GetIndexAtNativeDelegate GetIndexAt;
			public GetColumnAtIndexNativeDelegate GetColumnAtIndex;
			public GetRowAtIndexNativeDelegate GetRowAtIndex;
			public GetNColumnsNativeDelegate GetNColumns;
			public GetNRowsNativeDelegate GetNRows;
			public GetColumnExtentAtNativeDelegate GetColumnExtentAt;
			public GetRowExtentAtNativeDelegate GetRowExtentAt;
			public GetCaptionNativeDelegate GetCaption;
			public GetColumnDescriptionNativeDelegate GetColumnDescription;
			public GetColumnHeaderNativeDelegate GetColumnHeader;
			public GetRowDescriptionNativeDelegate GetRowDescription;
			public GetRowHeaderNativeDelegate GetRowHeader;
			public GetSummaryNativeDelegate GetSummary;
			public SetCaptionNativeDelegate SetCaption;
			public SetColumnDescriptionNativeDelegate SetColumnDescription;
			public SetColumnHeaderNativeDelegate SetColumnHeader;
			public SetRowDescriptionNativeDelegate SetRowDescription;
			public SetRowHeaderNativeDelegate SetRowHeader;
			public SetSummaryNativeDelegate SetSummary;
			public GetSelectedColumnsNativeDelegate GetSelectedColumns;
			public GetSelectedRowsNativeDelegate GetSelectedRows;
			public IsColumnSelectedNativeDelegate IsColumnSelected;
			public IsRowSelectedNativeDelegate IsRowSelected;
			public IsSelectedNativeDelegate IsSelected;
			public AddRowSelectionNativeDelegate AddRowSelection;
			public RemoveRowSelectionNativeDelegate RemoveRowSelection;
			public AddColumnSelectionNativeDelegate AddColumnSelection;
			public RemoveColumnSelectionNativeDelegate RemoveColumnSelection;
			IntPtr RowInserted;
			IntPtr ColumnInserted;
			IntPtr RowDeleted;
			IntPtr ColumnDeleted;
			IntPtr RowReordered;
			IntPtr ColumnReordered;
			IntPtr ModelChanged;
		}

		static AtkTableIface iface;

		static TableAdapter ()
		{
			GLib.GType.Register (_gtype, typeof (TableAdapter));
			iface.RefAt = new RefAtNativeDelegate (RefAt_cb);
			iface.GetIndexAt = new GetIndexAtNativeDelegate (GetIndexAt_cb);
			iface.GetColumnAtIndex = new GetColumnAtIndexNativeDelegate (GetColumnAtIndex_cb);
			iface.GetRowAtIndex = new GetRowAtIndexNativeDelegate (GetRowAtIndex_cb);
			iface.GetNColumns = new GetNColumnsNativeDelegate (GetNColumns_cb);
			iface.GetNRows = new GetNRowsNativeDelegate (GetNRows_cb);
			iface.GetColumnExtentAt = new GetColumnExtentAtNativeDelegate (GetColumnExtentAt_cb);
			iface.GetRowExtentAt = new GetRowExtentAtNativeDelegate (GetRowExtentAt_cb);
			iface.GetCaption = new GetCaptionNativeDelegate (GetCaption_cb);
			iface.GetColumnDescription = new GetColumnDescriptionNativeDelegate (GetColumnDescription_cb);
			iface.GetColumnHeader = new GetColumnHeaderNativeDelegate (GetColumnHeader_cb);
			iface.GetRowDescription = new GetRowDescriptionNativeDelegate (GetRowDescription_cb);
			iface.GetRowHeader = new GetRowHeaderNativeDelegate (GetRowHeader_cb);
			iface.GetSummary = new GetSummaryNativeDelegate (GetSummary_cb);
			iface.SetCaption = new SetCaptionNativeDelegate (SetCaption_cb);
			iface.SetColumnDescription = new SetColumnDescriptionNativeDelegate (SetColumnDescription_cb);
			iface.SetColumnHeader = new SetColumnHeaderNativeDelegate (SetColumnHeader_cb);
			iface.SetRowDescription = new SetRowDescriptionNativeDelegate (SetRowDescription_cb);
			iface.SetRowHeader = new SetRowHeaderNativeDelegate (SetRowHeader_cb);
			iface.SetSummary = new SetSummaryNativeDelegate (SetSummary_cb);
			iface.GetSelectedColumns = new GetSelectedColumnsNativeDelegate (GetSelectedColumns_cb);
			iface.GetSelectedRows = new GetSelectedRowsNativeDelegate (GetSelectedRows_cb);
			iface.IsColumnSelected = new IsColumnSelectedNativeDelegate (IsColumnSelected_cb);
			iface.IsRowSelected = new IsRowSelectedNativeDelegate (IsRowSelected_cb);
			iface.IsSelected = new IsSelectedNativeDelegate (IsSelected_cb);
			iface.AddRowSelection = new AddRowSelectionNativeDelegate (AddRowSelection_cb);
			iface.RemoveRowSelection = new RemoveRowSelectionNativeDelegate (RemoveRowSelection_cb);
			iface.AddColumnSelection = new AddColumnSelectionNativeDelegate (AddColumnSelection_cb);
			iface.RemoveColumnSelection = new RemoveColumnSelectionNativeDelegate (RemoveColumnSelection_cb);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr RefAtNativeDelegate (IntPtr inst, int row, int column);

		static IntPtr RefAt_cb (IntPtr inst, int row, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				Atk.Object __result;
				__result = __obj.RefAt (row, column);
				return __result == null ? IntPtr.Zero : __result.OwnedHandle;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetIndexAtNativeDelegate (IntPtr inst, int row, int column);

		static int GetIndexAt_cb (IntPtr inst, int row, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.GetIndexAt (row, column);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetColumnAtIndexNativeDelegate (IntPtr inst, int index_);

		static int GetColumnAtIndex_cb (IntPtr inst, int index_)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.GetColumnAtIndex (index_);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetRowAtIndexNativeDelegate (IntPtr inst, int index_);

		static int GetRowAtIndex_cb (IntPtr inst, int index_)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.GetRowAtIndex (index_);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetNColumnsNativeDelegate (IntPtr inst);

		static int GetNColumns_cb (IntPtr inst)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.NColumns;
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetNRowsNativeDelegate (IntPtr inst);

		static int GetNRows_cb (IntPtr inst)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.NRows;
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetColumnExtentAtNativeDelegate (IntPtr inst, int row, int column);

		static int GetColumnExtentAt_cb (IntPtr inst, int row, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.GetColumnExtentAt (row, column);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetRowExtentAtNativeDelegate (IntPtr inst, int row, int column);

		static int GetRowExtentAt_cb (IntPtr inst, int row, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.GetRowExtentAt (row, column);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr GetCaptionNativeDelegate (IntPtr inst);

		static IntPtr GetCaption_cb (IntPtr inst)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				Atk.Object __result;
				__result = __obj.Caption;
				return __result == null ? IntPtr.Zero : __result.Handle;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr GetColumnDescriptionNativeDelegate (IntPtr inst, int column);

		static IntPtr GetColumnDescription_cb (IntPtr inst, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				string __result;
				__result = __obj.GetColumnDescription (column);
				return GLib.Marshaller.StringToPtrGStrdup(__result);
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr GetColumnHeaderNativeDelegate (IntPtr inst, int column);

		static IntPtr GetColumnHeader_cb (IntPtr inst, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				Atk.Object __result;
				__result = __obj.GetColumnHeader (column);
				return __result == null ? IntPtr.Zero : __result.Handle;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr GetRowDescriptionNativeDelegate (IntPtr inst, int row);

		static IntPtr GetRowDescription_cb (IntPtr inst, int row)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				string __result;
				__result = __obj.GetRowDescription (row);
				return GLib.Marshaller.StringToPtrGStrdup(__result);
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr GetRowHeaderNativeDelegate (IntPtr inst, int row);

		static IntPtr GetRowHeader_cb (IntPtr inst, int row)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				Atk.Object __result;
				__result = __obj.GetRowHeader (row);
				return __result == null ? IntPtr.Zero : __result.Handle;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr GetSummaryNativeDelegate (IntPtr inst);

		static IntPtr GetSummary_cb (IntPtr inst)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				Atk.Object __result;
				__result = __obj.Summary;
				return __result == null ? IntPtr.Zero : __result.Handle;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void SetCaptionNativeDelegate (IntPtr inst, IntPtr caption);

		static void SetCaption_cb (IntPtr inst, IntPtr caption)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				__obj.Caption = GLib.Object.GetObject(caption) as Atk.Object;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void SetColumnDescriptionNativeDelegate (IntPtr inst, int column, IntPtr description);

		static void SetColumnDescription_cb (IntPtr inst, int column, IntPtr description)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				__obj.SetColumnDescription (column, GLib.Marshaller.Utf8PtrToString (description));
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void SetColumnHeaderNativeDelegate (IntPtr inst, int column, IntPtr header);

		static void SetColumnHeader_cb (IntPtr inst, int column, IntPtr header)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				__obj.SetColumnHeader (column, GLib.Object.GetObject(header) as Atk.Object);
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void SetRowDescriptionNativeDelegate (IntPtr inst, int row, IntPtr description);

		static void SetRowDescription_cb (IntPtr inst, int row, IntPtr description)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				__obj.SetRowDescription (row, GLib.Marshaller.Utf8PtrToString (description));
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void SetRowHeaderNativeDelegate (IntPtr inst, int row, IntPtr header);

		static void SetRowHeader_cb (IntPtr inst, int row, IntPtr header)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				__obj.SetRowHeader (row, GLib.Object.GetObject(header) as Atk.Object);
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void SetSummaryNativeDelegate (IntPtr inst, IntPtr accessible);

		static void SetSummary_cb (IntPtr inst, IntPtr accessible)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				__obj.Summary = GLib.Object.GetObject(accessible) as Atk.Object;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, false);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetSelectedColumnsNativeDelegate (IntPtr inst, out int selected);

		static int GetSelectedColumns_cb (IntPtr inst, out int selected)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.GetSelectedColumns (out selected);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int GetSelectedRowsNativeDelegate (IntPtr inst, out int selected);

		static int GetSelectedRows_cb (IntPtr inst, out int selected)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				int __result;
				__result = __obj.GetSelectedRows (out selected);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool IsColumnSelectedNativeDelegate (IntPtr inst, int column);

		static bool IsColumnSelected_cb (IntPtr inst, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				bool __result;
				__result = __obj.IsColumnSelected (column);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool IsRowSelectedNativeDelegate (IntPtr inst, int row);

		static bool IsRowSelected_cb (IntPtr inst, int row)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				bool __result;
				__result = __obj.IsRowSelected (row);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool IsSelectedNativeDelegate (IntPtr inst, int row, int column);

		static bool IsSelected_cb (IntPtr inst, int row, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				bool __result;
				__result = __obj.IsSelected (row, column);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool AddRowSelectionNativeDelegate (IntPtr inst, int row);

		static bool AddRowSelection_cb (IntPtr inst, int row)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				bool __result;
				__result = __obj.AddRowSelection (row);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool RemoveRowSelectionNativeDelegate (IntPtr inst, int row);

		static bool RemoveRowSelection_cb (IntPtr inst, int row)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				bool __result;
				__result = __obj.RemoveRowSelection (row);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool AddColumnSelectionNativeDelegate (IntPtr inst, int column);

		static bool AddColumnSelection_cb (IntPtr inst, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				bool __result;
				__result = __obj.AddColumnSelection (column);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool RemoveColumnSelectionNativeDelegate (IntPtr inst, int column);

		static bool RemoveColumnSelection_cb (IntPtr inst, int column)
		{
			try {
				ITableImplementor __obj = GLib.Object.GetObject (inst, false) as ITableImplementor;
				bool __result;
				__result = __obj.RemoveColumnSelection (column);
				return __result;
			} catch (Exception e) {
				GLib.ExceptionManager.RaiseUnhandledException (e, true);
				// NOTREACHED: above call does not return.
				throw;
			}
		}

		static int class_offset = 2 * IntPtr.Size;

		static void Initialize (IntPtr ptr, IntPtr data)
		{
			IntPtr ifaceptr = new IntPtr (ptr.ToInt64 () + class_offset);
			AtkTableIface native_iface = (AtkTableIface) Marshal.PtrToStructure (ifaceptr, typeof (AtkTableIface));
			native_iface.RefAt = iface.RefAt;
			native_iface.GetIndexAt = iface.GetIndexAt;
			native_iface.GetColumnAtIndex = iface.GetColumnAtIndex;
			native_iface.GetRowAtIndex = iface.GetRowAtIndex;
			native_iface.GetNColumns = iface.GetNColumns;
			native_iface.GetNRows = iface.GetNRows;
			native_iface.GetColumnExtentAt = iface.GetColumnExtentAt;
			native_iface.GetRowExtentAt = iface.GetRowExtentAt;
			native_iface.GetCaption = iface.GetCaption;
			native_iface.GetColumnDescription = iface.GetColumnDescription;
			native_iface.GetColumnHeader = iface.GetColumnHeader;
			native_iface.GetRowDescription = iface.GetRowDescription;
			native_iface.GetRowHeader = iface.GetRowHeader;
			native_iface.GetSummary = iface.GetSummary;
			native_iface.SetCaption = iface.SetCaption;
			native_iface.SetColumnDescription = iface.SetColumnDescription;
			native_iface.SetColumnHeader = iface.SetColumnHeader;
			native_iface.SetRowDescription = iface.SetRowDescription;
			native_iface.SetRowHeader = iface.SetRowHeader;
			native_iface.SetSummary = iface.SetSummary;
			native_iface.GetSelectedColumns = iface.GetSelectedColumns;
			native_iface.GetSelectedRows = iface.GetSelectedRows;
			native_iface.IsColumnSelected = iface.IsColumnSelected;
			native_iface.IsRowSelected = iface.IsRowSelected;
			native_iface.IsSelected = iface.IsSelected;
			native_iface.AddRowSelection = iface.AddRowSelection;
			native_iface.RemoveRowSelection = iface.RemoveRowSelection;
			native_iface.AddColumnSelection = iface.AddColumnSelection;
			native_iface.RemoveColumnSelection = iface.RemoveColumnSelection;
			Marshal.StructureToPtr (native_iface, ifaceptr, false);
		}

		GLib.Object implementor;

		public TableAdapter ()
		{
			InitHandler = new GLib.GInterfaceInitHandler (Initialize);
		}

		public TableAdapter (ITableImplementor implementor)
		{
			if (implementor == null)
				throw new ArgumentNullException ("implementor");
			else if (!(implementor is GLib.Object))
				throw new ArgumentException ("implementor must be a subclass of GLib.Object");
			this.implementor = implementor as GLib.Object;
		}

		public TableAdapter (IntPtr handle)
		{
			if (!_gtype.IsInstance (handle))
				throw new ArgumentException ("The gobject doesn't implement the GInterface of this adapter", "handle");
			implementor = GLib.Object.GetObject (handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_atk_table_get_type();
		static d_atk_table_get_type atk_table_get_type = FuncLoader.LoadFunction<d_atk_table_get_type>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_type"));

		private static GLib.GType _gtype = new GLib.GType (atk_table_get_type ());

		public static GLib.GType GType {
			get {
				return _gtype;
			}
		}

		public override GLib.GType GInterfaceGType {
			get {
				return _gtype;
			}
		}

		public override IntPtr Handle {
			get {
				return implementor.Handle;
			}
		}

		public IntPtr OwnedHandle {
			get {
				return implementor.OwnedHandle;
			}
		}

		public static ITable GetObject (IntPtr handle, bool owned)
		{
			GLib.Object obj = GLib.Object.GetObject (handle, owned);
			return GetObject (obj);
		}

		public static ITable GetObject (GLib.Object obj)
		{
			if (obj == null)
				return null;
			else if (obj is ITableImplementor)
				return new TableAdapter (obj as ITableImplementor);
			else if (obj as ITable == null)
				return new TableAdapter (obj.Handle);
			else
				return obj as ITable;
		}

		public ITableImplementor Implementor {
			get {
				return implementor as ITableImplementor;
			}
		}

		[GLib.Signal("column_inserted")]
		public event Atk.ColumnInsertedHandler ColumnInserted {
			add {
				GLib.Object.GetObject (Handle).AddSignalHandler ("column_inserted", value, typeof (Atk.ColumnInsertedArgs));
			}
			remove {
				GLib.Object.GetObject (Handle).RemoveSignalHandler ("column_inserted", value);
			}
		}

		[GLib.Signal("row_deleted")]
		public event Atk.RowDeletedHandler RowDeleted {
			add {
				GLib.Object.GetObject (Handle).AddSignalHandler ("row_deleted", value, typeof (Atk.RowDeletedArgs));
			}
			remove {
				GLib.Object.GetObject (Handle).RemoveSignalHandler ("row_deleted", value);
			}
		}

		[GLib.Signal("row_reordered")]
		public event System.EventHandler RowReordered {
			add {
				GLib.Object.GetObject (Handle).AddSignalHandler ("row_reordered", value);
			}
			remove {
				GLib.Object.GetObject (Handle).RemoveSignalHandler ("row_reordered", value);
			}
		}

		[GLib.Signal("column_deleted")]
		public event Atk.ColumnDeletedHandler ColumnDeleted {
			add {
				GLib.Object.GetObject (Handle).AddSignalHandler ("column_deleted", value, typeof (Atk.ColumnDeletedArgs));
			}
			remove {
				GLib.Object.GetObject (Handle).RemoveSignalHandler ("column_deleted", value);
			}
		}

		[GLib.Signal("row_inserted")]
		public event Atk.RowInsertedHandler RowInserted {
			add {
				GLib.Object.GetObject (Handle).AddSignalHandler ("row_inserted", value, typeof (Atk.RowInsertedArgs));
			}
			remove {
				GLib.Object.GetObject (Handle).RemoveSignalHandler ("row_inserted", value);
			}
		}

		[GLib.Signal("column_reordered")]
		public event System.EventHandler ColumnReordered {
			add {
				GLib.Object.GetObject (Handle).AddSignalHandler ("column_reordered", value);
			}
			remove {
				GLib.Object.GetObject (Handle).RemoveSignalHandler ("column_reordered", value);
			}
		}

		[GLib.Signal("model_changed")]
		public event System.EventHandler ModelChanged {
			add {
				GLib.Object.GetObject (Handle).AddSignalHandler ("model_changed", value);
			}
			remove {
				GLib.Object.GetObject (Handle).RemoveSignalHandler ("model_changed", value);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_atk_table_add_column_selection(IntPtr raw, int column);
		static d_atk_table_add_column_selection atk_table_add_column_selection = FuncLoader.LoadFunction<d_atk_table_add_column_selection>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_add_column_selection"));

		public bool AddColumnSelection(int column) {
			bool raw_ret = atk_table_add_column_selection(Handle, column);
			bool ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_atk_table_add_row_selection(IntPtr raw, int row);
		static d_atk_table_add_row_selection atk_table_add_row_selection = FuncLoader.LoadFunction<d_atk_table_add_row_selection>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_add_row_selection"));

		public bool AddRowSelection(int row) {
			bool raw_ret = atk_table_add_row_selection(Handle, row);
			bool ret = raw_ret;
			return ret;
		}

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

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_atk_table_set_caption(IntPtr raw, IntPtr caption);
		static d_atk_table_set_caption atk_table_set_caption = FuncLoader.LoadFunction<d_atk_table_set_caption>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_set_caption"));

		public Atk.Object Caption { 
			get {
				IntPtr raw_ret = atk_table_get_caption(Handle);
				Atk.Object ret = GLib.Object.GetObject(raw_ret) as Atk.Object;
				return ret;
			}
			set {
				atk_table_set_caption(Handle, value == null ? IntPtr.Zero : value.Handle);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_column_at_index(IntPtr raw, int index_);
		static d_atk_table_get_column_at_index atk_table_get_column_at_index = FuncLoader.LoadFunction<d_atk_table_get_column_at_index>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_column_at_index"));

		[Obsolete]
		public int GetColumnAtIndex(int index_) {
			int raw_ret = atk_table_get_column_at_index(Handle, index_);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_atk_table_get_column_description(IntPtr raw, int column);
		static d_atk_table_get_column_description atk_table_get_column_description = FuncLoader.LoadFunction<d_atk_table_get_column_description>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_column_description"));

		public string GetColumnDescription(int column) {
			IntPtr raw_ret = atk_table_get_column_description(Handle, column);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_column_extent_at(IntPtr raw, int row, int column);
		static d_atk_table_get_column_extent_at atk_table_get_column_extent_at = FuncLoader.LoadFunction<d_atk_table_get_column_extent_at>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_column_extent_at"));

		public int GetColumnExtentAt(int row, int column) {
			int raw_ret = atk_table_get_column_extent_at(Handle, row, column);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_atk_table_get_column_header(IntPtr raw, int column);
		static d_atk_table_get_column_header atk_table_get_column_header = FuncLoader.LoadFunction<d_atk_table_get_column_header>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_column_header"));

		public Atk.Object GetColumnHeader(int column) {
			IntPtr raw_ret = atk_table_get_column_header(Handle, column);
			Atk.Object ret = GLib.Object.GetObject(raw_ret) as Atk.Object;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_index_at(IntPtr raw, int row, int column);
		static d_atk_table_get_index_at atk_table_get_index_at = FuncLoader.LoadFunction<d_atk_table_get_index_at>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_index_at"));

		[Obsolete]
		public int GetIndexAt(int row, int column) {
			int raw_ret = atk_table_get_index_at(Handle, row, column);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_n_columns(IntPtr raw);
		static d_atk_table_get_n_columns atk_table_get_n_columns = FuncLoader.LoadFunction<d_atk_table_get_n_columns>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_n_columns"));

		public int NColumns { 
			get {
				int raw_ret = atk_table_get_n_columns(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_n_rows(IntPtr raw);
		static d_atk_table_get_n_rows atk_table_get_n_rows = FuncLoader.LoadFunction<d_atk_table_get_n_rows>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_n_rows"));

		public int NRows { 
			get {
				int raw_ret = atk_table_get_n_rows(Handle);
				int ret = raw_ret;
				return ret;
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_row_at_index(IntPtr raw, int index_);
		static d_atk_table_get_row_at_index atk_table_get_row_at_index = FuncLoader.LoadFunction<d_atk_table_get_row_at_index>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_row_at_index"));

		[Obsolete]
		public int GetRowAtIndex(int index_) {
			int raw_ret = atk_table_get_row_at_index(Handle, index_);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_atk_table_get_row_description(IntPtr raw, int row);
		static d_atk_table_get_row_description atk_table_get_row_description = FuncLoader.LoadFunction<d_atk_table_get_row_description>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_row_description"));

		public string GetRowDescription(int row) {
			IntPtr raw_ret = atk_table_get_row_description(Handle, row);
			string ret = GLib.Marshaller.Utf8PtrToString (raw_ret);
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_row_extent_at(IntPtr raw, int row, int column);
		static d_atk_table_get_row_extent_at atk_table_get_row_extent_at = FuncLoader.LoadFunction<d_atk_table_get_row_extent_at>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_row_extent_at"));

		public int GetRowExtentAt(int row, int column) {
			int raw_ret = atk_table_get_row_extent_at(Handle, row, column);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_atk_table_get_row_header(IntPtr raw, int row);
		static d_atk_table_get_row_header atk_table_get_row_header = FuncLoader.LoadFunction<d_atk_table_get_row_header>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_row_header"));

		public Atk.Object GetRowHeader(int row) {
			IntPtr raw_ret = atk_table_get_row_header(Handle, row);
			Atk.Object ret = GLib.Object.GetObject(raw_ret) as Atk.Object;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_selected_columns(IntPtr raw, out int selected);
		static d_atk_table_get_selected_columns atk_table_get_selected_columns = FuncLoader.LoadFunction<d_atk_table_get_selected_columns>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_selected_columns"));

		public int GetSelectedColumns(out int selected) {
			int raw_ret = atk_table_get_selected_columns(Handle, out selected);
			int ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate int d_atk_table_get_selected_rows(IntPtr raw, out int selected);
		static d_atk_table_get_selected_rows atk_table_get_selected_rows = FuncLoader.LoadFunction<d_atk_table_get_selected_rows>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_get_selected_rows"));

		public int GetSelectedRows(out int selected) {
			int raw_ret = atk_table_get_selected_rows(Handle, out selected);
			int ret = raw_ret;
			return ret;
		}

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

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_atk_table_set_summary(IntPtr raw, IntPtr accessible);
		static d_atk_table_set_summary atk_table_set_summary = FuncLoader.LoadFunction<d_atk_table_set_summary>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_set_summary"));

		public Atk.Object Summary { 
			get {
				IntPtr raw_ret = atk_table_get_summary(Handle);
				Atk.Object ret = GLib.Object.GetObject(raw_ret) as Atk.Object;
				return ret;
			}
			set {
				atk_table_set_summary(Handle, value == null ? IntPtr.Zero : value.Handle);
			}
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_atk_table_is_column_selected(IntPtr raw, int column);
		static d_atk_table_is_column_selected atk_table_is_column_selected = FuncLoader.LoadFunction<d_atk_table_is_column_selected>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_is_column_selected"));

		public bool IsColumnSelected(int column) {
			bool raw_ret = atk_table_is_column_selected(Handle, column);
			bool ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_atk_table_is_row_selected(IntPtr raw, int row);
		static d_atk_table_is_row_selected atk_table_is_row_selected = FuncLoader.LoadFunction<d_atk_table_is_row_selected>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_is_row_selected"));

		public bool IsRowSelected(int row) {
			bool raw_ret = atk_table_is_row_selected(Handle, row);
			bool ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_atk_table_is_selected(IntPtr raw, int row, int column);
		static d_atk_table_is_selected atk_table_is_selected = FuncLoader.LoadFunction<d_atk_table_is_selected>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_is_selected"));

		public bool IsSelected(int row, int column) {
			bool raw_ret = atk_table_is_selected(Handle, row, column);
			bool ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate IntPtr d_atk_table_ref_at(IntPtr raw, int row, int column);
		static d_atk_table_ref_at atk_table_ref_at = FuncLoader.LoadFunction<d_atk_table_ref_at>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_ref_at"));

		public Atk.Object RefAt(int row, int column) {
			IntPtr raw_ret = atk_table_ref_at(Handle, row, column);
			Atk.Object ret = GLib.Object.GetObject(raw_ret, true) as Atk.Object;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_atk_table_remove_column_selection(IntPtr raw, int column);
		static d_atk_table_remove_column_selection atk_table_remove_column_selection = FuncLoader.LoadFunction<d_atk_table_remove_column_selection>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_remove_column_selection"));

		public bool RemoveColumnSelection(int column) {
			bool raw_ret = atk_table_remove_column_selection(Handle, column);
			bool ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate bool d_atk_table_remove_row_selection(IntPtr raw, int row);
		static d_atk_table_remove_row_selection atk_table_remove_row_selection = FuncLoader.LoadFunction<d_atk_table_remove_row_selection>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_remove_row_selection"));

		public bool RemoveRowSelection(int row) {
			bool raw_ret = atk_table_remove_row_selection(Handle, row);
			bool ret = raw_ret;
			return ret;
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_atk_table_set_column_description(IntPtr raw, int column, IntPtr description);
		static d_atk_table_set_column_description atk_table_set_column_description = FuncLoader.LoadFunction<d_atk_table_set_column_description>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_set_column_description"));

		public void SetColumnDescription(int column, string description) {
			IntPtr native_description = GLib.Marshaller.StringToPtrGStrdup (description);
			atk_table_set_column_description(Handle, column, native_description);
			GLib.Marshaller.Free (native_description);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_atk_table_set_column_header(IntPtr raw, int column, IntPtr header);
		static d_atk_table_set_column_header atk_table_set_column_header = FuncLoader.LoadFunction<d_atk_table_set_column_header>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_set_column_header"));

		public void SetColumnHeader(int column, Atk.Object header) {
			atk_table_set_column_header(Handle, column, header == null ? IntPtr.Zero : header.Handle);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_atk_table_set_row_description(IntPtr raw, int row, IntPtr description);
		static d_atk_table_set_row_description atk_table_set_row_description = FuncLoader.LoadFunction<d_atk_table_set_row_description>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_set_row_description"));

		public void SetRowDescription(int row, string description) {
			IntPtr native_description = GLib.Marshaller.StringToPtrGStrdup (description);
			atk_table_set_row_description(Handle, row, native_description);
			GLib.Marshaller.Free (native_description);
		}

		[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
		delegate void d_atk_table_set_row_header(IntPtr raw, int row, IntPtr header);
		static d_atk_table_set_row_header atk_table_set_row_header = FuncLoader.LoadFunction<d_atk_table_set_row_header>(FuncLoader.GetProcAddress(GLibrary.Load(Library.Atk), "atk_table_set_row_header"));

		public void SetRowHeader(int row, Atk.Object header) {
			atk_table_set_row_header(Handle, row, header == null ? IntPtr.Zero : header.Handle);
		}

#endregion
	}
}
