<Type Name="ListStore" FullName="Gtk.ListStore">
  <TypeSignature Language="C#" Maintainer="auto" Value="public class ListStore : GLib.Object, Gtk.TreeDragDest, Gtk.TreeDragSource, Gtk.TreeModel, Gtk.TreeSortable, System.Collections.IEnumerable" />
  <AssemblyInfo>
    <AssemblyName>gtk-sharp</AssemblyName>
    <AssemblyPublicKey>
    </AssemblyPublicKey>
    <AssemblyVersion>2.10.0.0</AssemblyVersion>
  </AssemblyInfo>
  <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
  <Docs>
    <summary>The ListStore is a columned list data structure to be used with <see cref="T:Gtk.TreeView" /> widget. </summary>
    <remarks>
      <para>
Iteration: In new versions of Gtk# (2.0 and up) this class implements the <see cref="T:System.Collections.IEnumerable" /> interface, so code can be written like this:
</para>
      <para>
        <example>
          <code lang="C#">
     void DumpColumnValues (ListStore store, int col)
     {
         foreach (object[] row in store) 
              Console.WriteLine ("Value of column {0} is {2}", col, row [col]);
     }
  </code>
        </example>
      </para>
    </remarks>
  </Docs>
  <Base>
    <BaseTypeName>GLib.Object</BaseTypeName>
  </Base>
  <Interfaces>
    <Interface>
      <InterfaceName>Gtk.TreeDragDest</InterfaceName>
    </Interface>
    <Interface>
      <InterfaceName>Gtk.TreeDragSource</InterfaceName>
    </Interface>
    <Interface>
      <InterfaceName>Gtk.TreeModel</InterfaceName>
    </Interface>
    <Interface>
      <InterfaceName>Gtk.TreeSortable</InterfaceName>
    </Interface>
    <Interface>
      <InterfaceName>System.Collections.IEnumerable</InterfaceName>
    </Interface>
  </Interfaces>
  <Members>
    <Member MemberName="IterNChildren">
      <MemberSignature Language="C#" Value="public int IterNChildren ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
	  Returns the number of children that <paramref name="iter" /> has.  
	</summary>
        <returns>an object of type <see cref="T:System.Int32" />, the number of children of <paramref name="iter" />.</returns>
        <remarks>As a special case, if <paramref name="iter" /> is <see langword="null" />, then the number
	  of toplevel nodes is returned.</remarks>
      </Docs>
    </Member>
    <Member MemberName="IterChildren">
      <MemberSignature Language="C#" Value="public bool IterChildren (out Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <summary>  
	  Sets <paramref name="iter" /> to point to the first child of <paramref name="parent" />.  
	</summary>
        <param name="iter">an object of type <see cref="T:Gtk.TreeIter" /></param>
        <returns>an object of type <see cref="T:System.Boolean" />,
        <see langword="true" />, if <paramref name="child" /> has been set to the first child.</returns>
        <remarks>
          <para>
	  If <paramref name="parent" /> has no children,
	  <see langword="false" /> is returned and <paramref name="iter" /> is set to be invalid.  <paramref name="parent" /> will remain a valid
	  node after this function has been called.
	  </para>
          <para>
	    If <paramref name="parent" /> is <see langword="null" /> returns the first node, equivalent to
	    <literal>gtk_tree_model_get_iter_first (tree_model, iter);</literal></para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="ChangeSortColumn">
      <MemberSignature Language="C#" Value="public void ChangeSortColumn ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Emits a <see cref="M:Gtk.ListStore.SortColumnChanged" /> event.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="SetSortColumnId">
      <MemberSignature Language="C#" Value="public void SetSortColumnId (int sort_column_id, Gtk.SortType order);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="sort_column_id" Type="System.Int32" />
        <Parameter Name="order" Type="Gtk.SortType" />
      </Parameters>
      <Docs>
        <summary>Sets the column number to sort by.</summary>
        <param name="sort_column_id">A <see cref="T:System.Int32" />, the column number to sort by.</param>
        <param name="order">A <see cref="T:Gtk.SortType" /></param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="SetSortFunc">
      <MemberSignature Language="C#" Value="public void SetSortFunc (int sort_column_id, Gtk.TreeIterCompareFunc sort_func, IntPtr user_data, Gtk.DestroyNotify destroy);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="sort_column_id" Type="System.Int32" />
        <Parameter Name="sort_func" Type="Gtk.TreeIterCompareFunc" />
        <Parameter Name="user_data" Type="System.IntPtr" />
        <Parameter Name="destroy" Type="Gtk.DestroyNotify" />
      </Parameters>
      <Docs>
        <summary>Sets a sort function to be used for the column <paramref name="sort_column_id" />.</summary>
        <param name="sort_column_id">A <see cref="T:System.Int32" /> for the column number.</param>
        <param name="sort_func">A <see cref="T:Gtk.TreeIterCompareFunc" /></param>
        <param name="user_data">ignored</param>
        <param name="destroy">ignored</param>
        <remarks>This overload is obsolete.  The two parameter overload is preferred for new code. </remarks>
      </Docs>
    </Member>
    <Member MemberName="SetDefaultSortFunc" Deprecated="true">
      <MemberSignature Language="C#" Value="public void SetDefaultSortFunc (Gtk.TreeIterCompareFunc sort_func, IntPtr user_data, Gtk.DestroyNotify destroy);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="sort_func" Type="Gtk.TreeIterCompareFunc" />
        <Parameter Name="user_data" Type="System.IntPtr" />
        <Parameter Name="destroy" Type="Gtk.DestroyNotify" />
      </Parameters>
      <Docs>
        <summary>Set the function that will be used by default to sort columns.</summary>
        <param name="sort_func">A <see cref="T:Gtk.TreeIterCompareFunc" /></param>
        <param name="user_data">ignored</param>
        <param name="destroy">ignored</param>
        <remarks>This method is obsolete.  The <see cref="M:Gtk.ListStore.DefaultSortFunc" /> property is preferred for new code. </remarks>
      </Docs>
    </Member>
    <Member MemberName="DefaultSortFunc">
      <MemberSignature Language="C#" Value="public Gtk.TreeIterCompareFunc DefaultSortFunc { set; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeIterCompareFunc</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The function that will be used by default to sort columns.</summary>
        <value>a <see cref="T:Gtk.TreeIterCompareFunc" /></value>
        <remarks />
        <since version="Gtk# 2.4" />
      </Docs>
    </Member>
    <Member MemberName="RowDropPossible">
      <MemberSignature Language="C#" Value="public bool RowDropPossible (Gtk.TreePath dest_path, Gtk.SelectionData selection_data);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="dest_path" Type="Gtk.TreePath" />
        <Parameter Name="selection_data" Type="Gtk.SelectionData" />
      </Parameters>
      <Docs>
        <summary>Returns true if the row at <paramref name="dest_path" /> can
	have <paramref name="selection_data" /> dropped on it.</summary>
        <param name="dest_path">A <see cref="T:Gtk.TreePath" /></param>
        <param name="selection_data">A <see cref="T:Gtk.SelectionData" /></param>
        <returns>A boolean.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="DragDataReceived">
      <MemberSignature Language="C#" Value="public bool DragDataReceived (Gtk.TreePath dest, Gtk.SelectionData selection_data);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="dest" Type="Gtk.TreePath" />
        <Parameter Name="selection_data" Type="Gtk.SelectionData" />
      </Parameters>
      <Docs>
        <summary>Drags data received into this <see cref="T:Gtk.ListStore" /> object.</summary>
        <param name="dest">A <see cref="T:Gtk.TreePath" />, the destination path of the drag</param>
        <param name="selection_data">A <see cref="T:Gtk.SelectionData" />, the data that was dragged</param>
        <returns>A boolean, true if the data was successfully received.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="DragDataGet">
      <MemberSignature Language="C#" Value="public bool DragDataGet (Gtk.TreePath path, Gtk.SelectionData selection_data);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="selection_data" Type="Gtk.SelectionData" />
      </Parameters>
      <Docs>
        <summary>Method used when this ListStore is part of a source widget
	for a drag-and-drop operation; gets the data that was dragged from the
	associated widget.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /></param>
        <param name="selection_data">A <see cref="T:Gtk.SelectionData" /></param>
        <returns>A <see cref="T:System.Boolean" />, true if the operation succeeded.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="RowDraggable">
      <MemberSignature Language="C#" Value="public bool RowDraggable (Gtk.TreePath path);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
      </Parameters>
      <Docs>
        <summary>Returns whether or not a given row can be dragged.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /></param>
        <returns>A boolean, true if the row is draggable.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="DragDataDelete">
      <MemberSignature Language="C#" Value="public bool DragDataDelete (Gtk.TreePath path);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
      </Parameters>
      <Docs>
        <summary>When this ListStore is the data source for a drag operation and the drag operation is a move, this method runs to delete the data after the data has been received by the target widget.</summary>
        <param name="path">A <see cref="T:Gtk.TreePath" />, the path of the data to delete.</param>
        <returns>A <see cref="T:System.Boolean" />, true if the operation succeeds.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="EmitRowChanged">
      <MemberSignature Language="C#" Value="public void EmitRowChanged (Gtk.TreePath path, Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Fires a <see cref="E:Gtk.ListStore.RowChanged" /> event. Call this after changing a row so that the view widget for this ListStore will update.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /></param>
        <param name="iter">a <see cref="Gtk.TreeIter" /></param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Foreach">
      <MemberSignature Language="C#" Value="public void Foreach (Gtk.TreeModelForeachFunc func);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="func" Type="Gtk.TreeModelForeachFunc" />
      </Parameters>
      <Docs>
        <summary>Runs a method on every row of a ListStore.</summary>
        <param name="func">A <see cref="T:Gtk.TreeModelForeachFunc" /> to run over every row.</param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="GetIterFirst">
      <MemberSignature Language="C#" Value="public bool GetIterFirst (out Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <summary>Initializes <paramref name="iter" /> with the first iterator in the ListStore (the top item).</summary>
        <param name="iter">A <see cref="T:Gtk.TreeIter&amp;" /> to reset</param>
        <returns>A <see cref="T:System.Boolean" />, true if the operation is successful, false if the ListStore is empty.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="EmitRowHasChildToggled">
      <MemberSignature Language="C#" Value="public void EmitRowHasChildToggled (Gtk.TreePath path, Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Emits a <see cref="T:Gtk.ListStore.RowHasChildToggled" /> event. This is meant to be called whenever the child state of a node changes.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /> to pass to the event</param>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /> to pass to the event</param>
        <remarks>This is mandated by the <see cref="T:Gtk.TreeModel" />, but it
	  shouldn't get used much for ListStores because they don't generally
	  have child nodes.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetPath">
      <MemberSignature Language="C#" Value="public Gtk.TreePath GetPath (Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreePath</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Turns a <see cref="T:Gtk.TreeIter" /> specified by <paramref name="iter" /> into a <see cref="T:Gtk.TreePath" />.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <returns>a <see cref="T:Gtk.TreePath" /></returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="IterHasChild">
      <MemberSignature Language="C#" Value="public bool IterHasChild (Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Tests whether a given row has a child node.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <returns>A <see cref="T:System:Boolean" />, always false for ListStores.</returns>
        <remarks>This is mandated by <see cref="T:Gtk.TreeModel" /></remarks>
      </Docs>
    </Member>
    <Member MemberName="RefNode">
      <MemberSignature Language="C#" Value="public void RefNode (Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Lets the ListStore reference the row pointed to by <paramref name="iter" />. </summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <remarks>
          <para>This function is primarily meant as a way for views to let caching model know when nodes are being displayed (and hence, whether or not to cache that node.)  For example, a file-system based model would not want to keep the entire file-hierarchy in memory, just the sections that are currently being displayed by every current view.</para>
          <para>A model should be expected to be able to get an iter independent of its reffed state.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="IterNChildren">
      <MemberSignature Language="C#" Value="public int IterNChildren (Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Returns the number of children that <paramref name="iter" /> has. If <paramref name="iter" /> is null, as in the case of all ListStore objects, this will return the number of top-level items.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <returns>a <see cref="System.Int32" /></returns>
        <remarks>FIXME: Why does ListStore.custom call gtk_tree_model_iter_n_children?</remarks>
      </Docs>
    </Member>
    <Member MemberName="EmitRowInserted">
      <MemberSignature Language="C#" Value="public void EmitRowInserted (Gtk.TreePath path, Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Fires a <see cref="E:Gtk.TreeModel.RowInserted" /> event. </summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /> to pass to the event.</param>
        <param name="iter">a see cref="T:Gtk.TreeIter" /&gt; to pass to the event.</param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="EmitRowDeleted">
      <MemberSignature Language="C#" Value="public void EmitRowDeleted (Gtk.TreePath path);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
      </Parameters>
      <Docs>
        <summary>Fires a <see cref="E:Gtk.TreeModel.RowDeleted" /> event. </summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /> to pass to the event.</param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="GetValist">
      <MemberSignature Language="C#" Value="public void GetValist (Gtk.TreeIter iter, IntPtr var_args);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="var_args" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Gets the values of child properties for the row pointed to by <paramref name="iter" />.</summary>
        <param name="iter">an object of type <see cref="T:Gtk.TreeIter" /></param>
        <param name="var_args">a <see cref="T:System.IntPtr" />, pointer to the va_list data structure of arguments (FIXME: clarify what va_lists look like)</param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="UnrefNode">
      <MemberSignature Language="C#" Value="public void UnrefNode (Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Lets the ListStore unref the row at <paramref name="iter" />.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <remarks>
          <para>This is an optional method 
	    for models to implement.  To be more specific, models may ignore 
	    this call as it exists primarily for performance reasons.</para>
          <para>For more information on what this means, see 
	    <see cref="M:Gtk.ListStore.RefNode" />. Please note that 
	    nodes that are deleted are not unreffed.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Clear">
      <MemberSignature Language="C#" Value="public void Clear ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Removes all data from the store.</summary>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="SetValist">
      <MemberSignature Language="C#" Value="public void SetValist (Gtk.TreeIter iter, IntPtr var_args);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="var_args" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Sets the values of child properties for the row pointed to by <paramref name="iter" />.</summary>
        <param name="iter">an object of type <see cref="T:Gtk.TreeIter" /></param>
        <param name="var_args">a <see cref="T:System.IntPtr" />, pointer to the va_list data structure of arguments (FIXME: clarify what va_lists look like)</param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="SetValue">
      <MemberSignature Language="C#" Value="public void SetValue (Gtk.TreeIter iter, int column, GLib.Value value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="GLib.Value" />
      </Parameters>
      <Docs>
        <summary>Sets the value of the specified column in the row pointed by <paramref name="iter" />.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" />, the column number</param>
        <param name="value">a <see cref="GLib.Value" /></param>
        <remarks>The type of specified column must be a <see cref="T:GLib.Value" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public ListStore (IntPtr raw);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="raw" Type="System.IntPtr" />
      </Parameters>
      <Docs>
        <summary>Internal constructor</summary>
        <param name="raw">Pointer to the C object.</param>
        <remarks>
          <para>This is an internal constructor, and should not be used by user code.</para>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="NColumns">
      <MemberSignature Language="C#" Value="public int NColumns { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The number of columns in this ListStore.</summary>
        <value>A <see cref="System.Int32" /></value>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Flags">
      <MemberSignature Language="C#" Value="public Gtk.TreeModelFlags Flags { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeModelFlags</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The flags for this ListStore. </summary>
        <value>A <see cref="T:Gtk.TreeModelFlags" /></value>
        <remarks>Flags are about the shape of this object's data; see the
	  class documentation for more details.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SortColumnChanged">
      <MemberSignature Language="C#" Value="public event EventHandler SortColumnChanged;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>System.EventHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Raised when the sorting column has changed.</summary>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal(CName="sort_column_changed")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="RowHasChildToggled">
      <MemberSignature Language="C#" Value="public event Gtk.RowHasChildToggledHandler RowHasChildToggled;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.RowHasChildToggledHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Raised when the display of a given row's children is toggled.</summary>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal(CName="row_has_child_toggled")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="RowInserted">
      <MemberSignature Language="C#" Value="public event Gtk.RowInsertedHandler RowInserted;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.RowInsertedHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Raised when a row of data is inserted.</summary>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal(CName="row_inserted")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="RowDeleted">
      <MemberSignature Language="C#" Value="public event Gtk.RowDeletedHandler RowDeleted;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.RowDeletedHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Raised when a row is deleted.</summary>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal(CName="row_deleted")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="RowChanged">
      <MemberSignature Language="C#" Value="public event Gtk.RowChangedHandler RowChanged;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.RowChangedHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Raised when a row has changed.</summary>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal(CName="row_changed")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="RowsReordered">
      <MemberSignature Language="C#" Value="public event Gtk.RowsReorderedHandler RowsReordered;" />
      <MemberType>Event</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.RowsReorderedHandler</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Raised when the order of rows has changed.</summary>
        <remarks />
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>GLib.Signal(CName="rows_reordered")</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName="IterNthChild">
      <MemberSignature Language="C#" Value="public bool IterNthChild (out Gtk.TreeIter iter, int n);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" />
        <Parameter Name="n" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>Sets <paramref name="iter" /> to be the child of this ListStore, using the given index.  The first index is 0.  If <paramref name="n" /> is too big, or this ListStore has no rows, <paramref name="iter" /> is set to an invalid iterator and false is returned.  For ListStore objects, the <paramref name="n" />th root node is set, since they don't have a tree-like structure.
</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter&amp;" /></param>
        <param name="n">a <see cref="T:System.Int32" /></param>
        <returns>a <see cref="T:System.Boolean" />, true if <paramref name="iter" /> has an <paramref name="n" />th child.</returns>
        <remarks>This is a custom binding for Gtk# which assumes that the current object is the parent. An alternate invocation form that parallels the C API is available.</remarks>
      </Docs>
    </Member>
    <Member MemberName="IterNthChild">
      <MemberSignature Language="C#" Value="public bool IterNthChild (out Gtk.TreeIter iter, Gtk.TreeIter parent, int n);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" />
        <Parameter Name="parent" Type="Gtk.TreeIter" />
        <Parameter Name="n" Type="System.Int32" />
      </Parameters>
      <Docs>
        <param name="iter">a <see cref="T:Gtk.TreeIter&amp;" /></param>
        <param name="parent">To be added.</param>
        <param name="n">a <see cref="T:System.Int32" /></param>
        <summary>Sets <paramref name="iter" /> to be the child of <paramref name="parent" />, using the given index.  The first index is 0.  If <paramref name="n" /> is too big, or <paramref name="parent" /> has no children, <paramref name="iter" /> is set to an invalid iterator and false is returned.  <paramref name="parent" /> will remain a valid node after this function has been called.  As a special case, if <paramref name="parent" /> is <see langword="null" />, then the <paramref name="n" />th root node is set.
</summary>
        <returns>a <see cref="T:System.Boolean" />, true if <paramref name="parent" /> has an <paramref name="n" />th child.</returns>
        <remarks>This invocation form is closer to the underlying C API, but it's probably less useful for most C# purposes.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetIterFromString">
      <MemberSignature Language="C#" Value="public bool GetIterFromString (out Gtk.TreeIter iter, string path_string);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" />
        <Parameter Name="path_string" Type="System.String" />
      </Parameters>
      <Docs>
        <summary>Marshals a path string into a <see cref="T:Gtk.TreeIter" /> object that points to a row in this tree.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter&amp;" /> to be set by this method</param>
        <param name="path_string">A path string</param>
        <returns>A <see cref="System.Boolean" />, true if this string is a valid path for this ListStore.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="IterChildren">
      <MemberSignature Language="C#" Value="public bool IterChildren (out Gtk.TreeIter iter, Gtk.TreeIter parent);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" />
        <Parameter Name="parent" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>
        </summary>
        <param name="iter">
          <see cref="T:Gtk.TreeIter" />, an object that will be set to point to the first child.</param>
        <param name="parent">a <see cref="T:Gtk.TreeIter" />, the parent row.</param>
        <returns>A <see cref="System.Boolean" />, true if <paramref name="iter" /> has children.</returns>
        <remarks>In general, this will return false, as ListStore isn't tree-shaped. However, if <paramref name="parent" /> is <see langword="null" />, <paramref name="iter" /> will return the list itself, since they're all children of the root.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetIter">
      <MemberSignature Language="C#" Value="public bool GetIter (out Gtk.TreeIter iter, Gtk.TreePath path);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" />
        <Parameter Name="path" Type="Gtk.TreePath" />
      </Parameters>
      <Docs>
        <summary>Gets an iterator object for the given <paramref name="path" />.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter&amp;" /> to set to point to the row.</param>
        <param name="path">a <see cref="Gtk.TreePath" /></param>
        <returns>A <see cref="T:System.Boolean" />, true if the row exists</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="IterParent">
      <MemberSignature Language="C#" Value="public bool IterParent (out Gtk.TreeIter iter, Gtk.TreeIter child);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" />
        <Parameter Name="child" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Gets the parent row of <paramref name="child" />.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter&amp;" /> to set to point to the row.</param>
        <param name="child">a <see cref="T:Gtk.TreeIter" />, the child row whose parent we want to get</param>
        <returns>A <see cref="T:System.Boolean" />, true if the parent exists. Since ListStore objects aren't tree-shaped, this will always return false.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="AppendValues">
      <MemberSignature Language="C#" Value="public Gtk.TreeIter AppendValues (object[] values);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeIter</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="values" Type="System.Object[]">
          <Attributes>
            <Attribute>
              <AttributeName>System.ParamArray</AttributeName>
            </Attribute>
          </Attributes>
        </Parameter>
      </Parameters>
      <Docs>
        <summary>Appends a new row to the ListStore and puts the objects in <paramref name="values" /> in it.</summary>
        <param name="values">a list <see cref="T:System.Object[]" />, one item for each column of a row.</param>
        <returns>a <see cref="T:Gtk.TreeIter" /> pointing to the new row</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="AppendValues">
      <MemberSignature Language="C#" Value="public Gtk.TreeIter AppendValues (Array values);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeIter</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="values" Type="System.Array" />
      </Parameters>
      <Docs>
        <summary>Appends a new row to the ListStore and puts the contents of <paramref name="values" /> in it.</summary>
        <param name="values">a <see cref="T:System.Array" /> with as many elements as the ListStore has columns.</param>
        <returns>a <see cref="T:Gtk.TreeIter" /> pointing to the new row</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="GetStringFromIter">
      <MemberSignature Language="C#" Value="public string GetStringFromIter (Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.String</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Marshals the given <paramref name="iter" /> into a path string.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <returns>a <see cref="T:System.String" /></returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="MoveAfter">
      <MemberSignature Language="C#" Value="public void MoveAfter (Gtk.TreeIter iter, Gtk.TreeIter position);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="position" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Move the row pointed to by <paramref name="iter" /> to the
	  position after <paramref name="position" />. If 
	  <paramref name="position" /> is <see langword="null" />, 
	  <paramref name="iter" /> will be moved to point to the start
	  of the list.
	</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="position">a <see cref="T:Gtk.TreeIter" /></param>
        <remarks>This only works in unsorted stores.</remarks>
      </Docs>
    </Member>
    <Member MemberName="Swap">
      <MemberSignature Language="C#" Value="public void Swap (Gtk.TreeIter a, Gtk.TreeIter b);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="a" Type="Gtk.TreeIter" />
        <Parameter Name="b" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Swaps rows a and b in the store.</summary>
        <param name="a">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="b">a <see cref="T:Gtk.TreeIter" /></param>
        <remarks>This is only works in unsorted stores.</remarks>
      </Docs>
    </Member>
    <Member MemberName="MoveBefore">
      <MemberSignature Language="C#" Value="public void MoveBefore (Gtk.TreeIter iter, Gtk.TreeIter position);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="position" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Move the row pointed to by <paramref name="iter" /> to the
	  position before <paramref name="position" />. If 
	  <paramref name="position" /> is <see langword="null" />, 
	  <paramref name="iter" /> will be moved to point to the end
	  of the list.
	</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="position">a <see cref="T:Gtk.TreeIter" /></param>
        <remarks>This only works in unsorted stores.</remarks>
      </Docs>
    </Member>
    <Member MemberName="IterIsValid">
      <MemberSignature Language="C#" Value="public bool IterIsValid (Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Test whether <paramref name="iter" /> is valid for this ListStore.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <returns>a <see cref="T:System.Boolean" />, true if <paramref name="iter" /> is valid.</returns>
        <remarks>WARNING: this method is slow and is only intended for
	debugging/testing purposes.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public ListStore (Type[] types);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="types" Type="System.Type[]">
          <Attributes>
            <Attribute>
              <AttributeName>System.ParamArray</AttributeName>
            </Attribute>
          </Attributes>
        </Parameter>
      </Parameters>
      <Docs>
        <summary>Creates a new store. The columns' type specified by the argument.</summary>
        <param name="types">a <see cref="T:System.Type[]" /></param>
        <remarks>
          <example>
            <code lang="C#">
ListStore ls = new ListStore (typeof (string), typeof (int), typeof (double));
...
  </code>
          </example>
The above example creates a new three columns list store. The types of the columns are <see cref="T:System.String" />, <see cref="T:System.Int32" />, and <see cref="T:System.Double" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetSortColumnId">
      <MemberSignature Language="C#" Value="public bool GetSortColumnId (out int sort_column_id, out Gtk.SortType order);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="sort_column_id" Type="System.Int32&amp;" RefType="out" />
        <Parameter Name="order" Type="Gtk.SortType&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <summary>Report on which column is currently being used to sort this ListStore.</summary>
        <param name="sort_column_id">a <see cref="T:System.Int32&amp;" />, gets filled with the column number that's currently used for sorting</param>
        <param name="order">a <see cref="T:Gtk.SortType&amp;" />, the current type of sort (ascending or descending)</param>
        <returns>a <see cref="T:System.Boolean" />, false if the default sort column for this ListStore is being used, true if some other sort column is being used.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="SetValue">
      <MemberSignature Language="C#" Value="public void SetValue (Gtk.TreeIter iter, int column, bool value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="System.Boolean" />
      </Parameters>
      <Docs>
        <summary>Sets the value of the specified column in the row pointed by iter.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" /></param>
        <param name="value">a <see cref="T:System.Boolean" /></param>
        <remarks>The type of specified column must be a <see cref="T:System.Boolean" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetValue">
      <MemberSignature Language="C#" Value="public void SetValue (Gtk.TreeIter iter, int column, double value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="System.Double" />
      </Parameters>
      <Docs>
        <summary>Sets the value of the specified column in the row pointed by iter.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" /></param>
        <param name="value">a <see cref="T:System.Double" /></param>
        <remarks>The type of specified column must be a <see cref="T:System.Double" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetValue">
      <MemberSignature Language="C#" Value="public void SetValue (Gtk.TreeIter iter, int column, int value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>Sets the value of the specified column in the row pointed by iter.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" /></param>
        <param name="value">a <see cref="T:System.Int32" /></param>
        <remarks>The type of specified column must be an <see cref="T:System.Int32" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetValue">
      <MemberSignature Language="C#" Value="public void SetValue (Gtk.TreeIter iter, int column, string value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="System.String" />
      </Parameters>
      <Docs>
        <summary>Sets the value of the specified column in the row pointed by iter.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" /></param>
        <param name="value">a <see cref="T:System.String" /></param>
        <remarks>The type of specified column must be a <see cref="T:System.String" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetValue">
      <MemberSignature Language="C#" Value="public void SetValue (Gtk.TreeIter iter, int column, float value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="System.Single" />
      </Parameters>
      <Docs>
        <summary>Sets the value of the specified column in the row pointed by iter.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" /></param>
        <param name="value">a <see cref="T:System.Single" /></param>
        <remarks>The type of specified column must be an <see cref="T:System.Single" /></remarks>
      </Docs>
    </Member>
    <Member MemberName="SetValue">
      <MemberSignature Language="C#" Value="public void SetValue (Gtk.TreeIter iter, int column, uint value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="System.UInt32" />
      </Parameters>
      <Docs>
        <summary>Sets the value of the specified column in the row pointed by iter.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" /></param>
        <param name="value">a <see cref="T:System.UInt32" /></param>
        <remarks>The type of specified column must be an <see cref="T:System.UInt32" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="SetValue">
      <MemberSignature Language="C#" Value="public void SetValue (Gtk.TreeIter iter, int column, object value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="System.Object" />
      </Parameters>
      <Docs>
        <summary>Sets the value of the specified column in the row pointed by iter.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" /></param>
        <param name="value">a <see cref="T:System.Object" /></param>
        <remarks>The type of specified column must be an <see cref="T:System.Object" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetValue">
      <MemberSignature Language="C#" Value="public object GetValue (Gtk.TreeIter iter, int column);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Object</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>Gets the data from row <paramref name="iter" /> of column
	<paramref name="column" />.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" />, the row to look in</param>
        <param name="column">a <see cref="T:System.Int32" />, the column number to look in</param>
        <returns>a <see cref="T:System.Object" /></returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="HasDefaultSortFunc">
      <MemberSignature Language="C#" Value="public bool HasDefaultSortFunc { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Find out whether this ListStore has a default sort function.</summary>
        <value>a <see cref="T:System.Boolean" />, true if there is a default
	sort function.</value>
        <remarks>To set a default sort function, use the <see cref="M:Gtk.ListStore.DefaultSortFunc" /> property.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GType">
      <MemberSignature Language="C#" Value="public static GLib.GType GType { get; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>GLib.GType</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>GType Property.</summary>
        <value>a <see cref="T:GLib.GType" /></value>
        <remarks>Returns the native <see cref="T:GLib.GType" /> value for <see cref="T:Gtk.ListStore" />.</remarks>
      </Docs>
    </Member>
    <Member MemberName="ColumnTypes">
      <MemberSignature Language="C#" Value="public GLib.GType[] ColumnTypes { set; };" />
      <MemberType>Property</MemberType>
      <ReturnValue>
        <ReturnType>GLib.GType[]</ReturnType>
      </ReturnValue>
      <Docs>
        <summary>The types in each column of a ListStore.</summary>
        <value>a <see cref="T:GLib.GType[]" /></value>
        <remarks>
	    This property is meant primarily for classes that
	    inherit from <see cref="T:Gtk.ListStore" />, and should
	    only be used when constructing a new <see cref="T:Gtk.ListStore" />. It will not function after a
	    row has been added or after a method on the <see cref="T:Gtk.TreeModel" /> interface has been called.
	</remarks>
        <since version="Gtk# 2.4" />
      </Docs>
    </Member>
    <Member MemberName="SetColumnTypes" Deprecated="true">
      <MemberSignature Language="C#" Value="public void SetColumnTypes (GLib.GType[] types);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="types" Type="GLib.GType[]" />
      </Parameters>
      <Docs>
        <summary>Deprecated method to set what types go in each column of a ListStore.</summary>
        <param name="types">a <see cref="T:GLib.GType[]" /></param>
        <remarks>See <see cref="M:Gtk.ListStore.ColumnTypes" /></remarks>
      </Docs>
    </Member>
    <Member MemberName="GetColumnType">
      <MemberSignature Language="C#" Value="public GLib.GType GetColumnType (int index_);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>GLib.GType</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="index_" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>Gets the type of data stored in column number <paramref name="index_" />.</summary>
        <param name="index_">a <see cref="T:System.Int32" />, the column to check</param>
        <returns>a <see cref="T:GLib.GType" /></returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="OnRowsReordered">
      <MemberSignature Language="C#" Value="protected virtual void OnRowsReordered (Gtk.TreePath path, Gtk.TreeIter iter, out int new_order);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="new_order" Type="System.Int32&amp;" RefType="out" />
      </Parameters>
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.ListStore.RowsReordered" /> event.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /></param>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="new_order">a <see cref="T:System.Int32&amp;" /></param>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.ListStore.RowsReordered" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnRowChanged">
      <MemberSignature Language="C#" Value="protected virtual void OnRowChanged (Gtk.TreePath path, Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.ListStore.RowChanged" /> event.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /></param>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.ListStore.RowChanged" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnRowDeleted">
      <MemberSignature Language="C#" Value="protected virtual void OnRowDeleted (Gtk.TreePath path);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
      </Parameters>
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.ListStore.RowDeleted" /> event.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /></param>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.ListStore.RowDeleted" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnRowInserted">
      <MemberSignature Language="C#" Value="protected virtual void OnRowInserted (Gtk.TreePath path, Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.ListStore.RowInserted" /> event.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /></param>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.ListStore.RowInserted" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnRowHasChildToggled">
      <MemberSignature Language="C#" Value="protected virtual void OnRowHasChildToggled (Gtk.TreePath path, Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.ListStore.RowHasChildToggled" /> event.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" /></param>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.ListStore.RowHasChildToggled" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName="OnSortColumnChanged">
      <MemberSignature Language="C#" Value="protected virtual void OnSortColumnChanged ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Default handler for the <see cref="M:Gtk.ListStore.SortColumnChanged" /> event.</summary>
        <remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.ListStore.SortColumnChanged" /> event.</remarks>
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected ListStore (GLib.GType gtype);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="gtype" Type="GLib.GType" />
      </Parameters>
      <Docs>
        <summary>Protected Constructor.</summary>
        <param name="gtype">a <see cref="T:GLib.GType" /></param>
        <remarks>Chain to this constructor if you have manually registered a native <see cref="T:GLib.GType" /> value for your subclass.</remarks>
      </Docs>
      <Attributes>
        <Attribute>
          <AttributeName>System.Obsolete(Message=null, IsError=False)</AttributeName>
        </Attribute>
      </Attributes>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="public ListStore (GLib.GType[] types);" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters>
        <Parameter Name="types" Type="GLib.GType[]">
          <Attributes>
            <Attribute>
              <AttributeName>System.ParamArray</AttributeName>
            </Attribute>
          </Attributes>
        </Parameter>
      </Parameters>
      <Docs>
        <summary>Default constructor.</summary>
        <param name="types">a <see cref="T:GLib.GType[]" /></param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="Reorder">
      <MemberSignature Language="C#" Value="public int Reorder ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Reorders the ListStore.</summary>
        <returns>a <see cref="T:System.Int32" />.</returns>
        <remarks>(FIXME: Does this binding work?)</remarks>
      </Docs>
    </Member>
    <Member MemberName="Insert">
      <MemberSignature Language="C#" Value="public Gtk.TreeIter Insert (int position);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeIter</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="position" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>Inserts a new row at position <paramref name="position" />.</summary>
        <param name="position">a <see cref="T:System.Int32" /></param>
        <returns>a <see cref="T:Gtk.TreeIter" /> pointing to the new row.</returns>
        <remarks> If <paramref name="position" /> is larger than the number 
	  of rows on the list, then the new row will be appended to the list. 
	  The row will be empty before this function is called. To set the
	  value of the new row, use <see cref="M:Gtk.ListStore.SetValue" />. 
	</remarks>
      </Docs>
    </Member>
    <Member MemberName="Prepend">
      <MemberSignature Language="C#" Value="public Gtk.TreeIter Prepend ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeIter</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Adds a new row to the beginning of the list.</summary>
        <returns>a <see cref="T:Gtk.TreeIter" /> pointing to the new row.
	</returns>
        <remarks>
	  The row will be empty before this function is called. To set the
	  value of the new row, use <see cref="M:Gtk.ListStore.SetValue" />. 
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="InsertBefore">
      <MemberSignature Language="C#" Value="public Gtk.TreeIter InsertBefore (Gtk.TreeIter sibling);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeIter</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="sibling" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>
	  Inserts a new row before <paramref name="sibling" />. If 
	  <paramref name="sibling" /> is null, then the row will be appended 
	  to the end of the list. 
	</summary>
        <param name="sibling">a <see cref="T:Gtk.TreeIter" />, the row to insert before</param>
        <returns>a <see cref="T:Gtk.TreeIter" /> that points to the new row</returns>
        <remarks>
	  The row will be empty before this function is called. To set the
	  value of the new row, use <see cref="M:Gtk.ListStore.SetValue" />. 
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="InsertAfter">
      <MemberSignature Language="C#" Value="public Gtk.TreeIter InsertAfter (Gtk.TreeIter sibling);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeIter</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="sibling" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>
	  Inserts a new row after <paramref name="sibling" />. If 
	  <paramref name="sibling" /> is null, then the row will be appended 
	  to the end of the list. 
	</summary>
        <param name="sibling">a <see cref="T:Gtk.TreeIter" />, the row to insert before</param>
        <returns>a <see cref="T:Gtk.TreeIter" /> that points to the new row</returns>
        <remarks>
	  The row will be empty before this function is called. To set the
	  value of the new row, use <see cref="M:Gtk.ListStore.SetValue" />. 
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="Append">
      <MemberSignature Language="C#" Value="public Gtk.TreeIter Append ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>Gtk.TreeIter</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>Appends a new row to the ListStore.</summary>
        <returns>a <see cref="T:Gtk.TreeIter" /> that points to the new row.</returns>
        <remarks>
	  The row will be empty before this function is called. To set the
	  value of the new row, use <see cref="M:Gtk.ListStore.SetValue" />. 
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="EmitRowsReordered">
      <MemberSignature Language="C#" Value="public int EmitRowsReordered (Gtk.TreePath path, Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="path" Type="Gtk.TreePath" />
        <Parameter Name="iter" Type="Gtk.TreeIter" />
      </Parameters>
      <Docs>
        <summary>Fires a <see cref="E:Gtk.ListStore.RowsReordered" /> event.</summary>
        <param name="path">a <see cref="T:Gtk.TreePath" />, pointer to the row whose children have been reordered</param>
        <param name="iter">a <see cref="T:Gtk.TreeIter" />, pointer to the row whose children have been reordered</param>
        <returns>a <see cref="T:System.Int32" /></returns>
        <remarks>This is part of the implementation of <see cref="T:Gtk.TreeModel" />. It should be called by other class methods that reorder rows so that the proper events are raised. (FIXME: since lists don't have parents/children, how does this get used in practice? There should be an example here.)</remarks>
      </Docs>
    </Member>
    <Member MemberName="Remove">
      <MemberSignature Language="C#" Value="public bool Remove (ref Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="ref" />
      </Parameters>
      <Docs>
        <summary>Removes a row from the store.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <returns>a <see cref="T:System.Boolean" /></returns>
        <remarks>After being removed, <paramref name="iter" /> is set to be the next valid row, or invalidated if it pointed to the last row in the store.</remarks>
      </Docs>
    </Member>
    <Member MemberName="GetValue">
      <MemberSignature Language="C#" Value="public void GetValue (Gtk.TreeIter iter, int column, ref GLib.Value value);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="column" Type="System.Int32" />
        <Parameter Name="value" Type="GLib.Value&amp;" RefType="ref" />
      </Parameters>
      <Docs>
        <summary>Gets the value of row <paramref name="iter" /> of column 
	  <paramref name="column" /> and puts it in <paramref name="value" />.
	</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="column">a <see cref="T:System.Int32" /></param>
        <param name="value">a <see cref="T:GLib.Value" /></param>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName="IterNext">
      <MemberSignature Language="C#" Value="public bool IterNext (ref Gtk.TreeIter iter);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Boolean</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="ref" />
      </Parameters>
      <Docs>
        <summary>Advances <paramref name="iter" /> to the next row.</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <returns>a <see cref="T:System.Boolean" /> for whether the operation succeeded.</returns>
        <remarks />
      </Docs>
    </Member>
    <Member MemberName=".ctor">
      <MemberSignature Language="C#" Value="protected ListStore ();" />
      <MemberType>Constructor</MemberType>
      <ReturnValue />
      <Parameters />
      <Docs>
        <summary>Protected constructor.</summary>
        <remarks>
        </remarks>
      </Docs>
    </Member>
    <Member MemberName="SetSortFunc">
      <MemberSignature Language="C#" Value="public void SetSortFunc (int sort_column_id, Gtk.TreeIterCompareFunc sort_func);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Void</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="sort_column_id" Type="System.Int32" />
        <Parameter Name="sort_func" Type="Gtk.TreeIterCompareFunc" />
      </Parameters>
      <Docs>
        <summary>Sets a sort function to be used for the column <paramref name="sort_column_id" />.</summary>
        <param name="sort_column_id">A <see cref="T:System.Int32" /> for the column number.</param>
        <param name="sort_func">A <see cref="T:Gtk.TreeIterCompareFunc" /></param>
        <remarks />
        <since version="Gtk# 2.4" />
      </Docs>
    </Member>
    <Member MemberName="InsertWithValuesv">
      <MemberSignature Language="C#" Value="public int InsertWithValuesv (Gtk.TreeIter iter, int position, GLib.Value values, int n_values);" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Int32</ReturnType>
      </ReturnValue>
      <Parameters>
        <Parameter Name="iter" Type="Gtk.TreeIter" />
        <Parameter Name="position" Type="System.Int32" />
        <Parameter Name="values" Type="GLib.Value" />
        <Parameter Name="n_values" Type="System.Int32" />
      </Parameters>
      <Docs>
        <summary>To be added</summary>
        <param name="iter">a <see cref="T:Gtk.TreeIter" /></param>
        <param name="position">a <see cref="T:System.Int32" /></param>
        <param name="values">a <see cref="T:GLib.Value" /></param>
        <param name="n_values">a <see cref="T:System.Int32" /></param>
        <returns>a <see cref="T:System.Int32" /></returns>
        <remarks>To be added</remarks>
        <since version="Gtk# 2.6" />
      </Docs>
    </Member>
    <Member MemberName="GetEnumerator">
      <MemberSignature Language="C#" Value="public System.Collections.IEnumerator GetEnumerator ();" />
      <MemberType>Method</MemberType>
      <ReturnValue>
        <ReturnType>System.Collections.IEnumerator</ReturnType>
      </ReturnValue>
      <Parameters />
      <Docs>
        <summary>
          <para>Returns a <see cref="T:System.Collections.IEnumerator" /> for the current instance.</para>
        </summary>
        <returns>a <see cref="T:System.Collections.IEnumerator" /></returns>
        <remarks>
          <para> If the elements of the current instance are modified while an enumeration is in progress, a call to <see cref="M:System.Collections.IEnumerator.MoveNext" /> or <see cref="P:System.Collections.IEnumerator.Current" /> throws <see cref="T:System.InvalidOperationException" />.</para>
        </remarks>
        <since version="Gtk# 2.4" />
      </Docs>
    </Member>
  </Members>
</Type>
