add a get_indices_with_depth method to GtkTreePath with proper GI array annotations

* get_indices does not return a length so we can not annotate it to return an
  array in bindings that use GObject Introspection
* this method is the same as get_indices except it takes an int * as the depth
  parameter which we can then use in the array annotation
* in C this function returns an integer pointer array and updates depth to the
  number of integers in the array
* in a GI binding this returns the native array type for the bound language
  (e.g. in PyGI this returns a list of integers)
This commit is contained in:
John (J5) Palmieri 2010-04-27 17:12:41 -04:00
parent 5098f34234
commit 33194ff5f4
5 changed files with 41 additions and 0 deletions

View File

@ -4675,6 +4675,7 @@ gtk_tree_path_append_index
gtk_tree_path_prepend_index
gtk_tree_path_get_depth
gtk_tree_path_get_indices
gtk_tree_path_get_indices_with_depth
gtk_tree_path_free
gtk_tree_path_copy
gtk_tree_path_compare

View File

@ -412,6 +412,16 @@ compatibility reasons.
@Returns:
<!-- ##### FUNCTION gtk_tree_path_get_indices_with_depth ##### -->
<para>
</para>
@path:
@depth:
@Returns:
<!-- ##### FUNCTION gtk_tree_path_free ##### -->
<para>

View File

@ -4671,6 +4671,7 @@ gtk_tree_path_down
gtk_tree_path_free
gtk_tree_path_get_depth
gtk_tree_path_get_indices
gtk_tree_path_get_indices_with_depth
gtk_tree_path_get_type G_GNUC_CONST
gtk_tree_path_is_ancestor
gtk_tree_path_is_descendant

View File

@ -622,6 +622,31 @@ gtk_tree_path_get_indices (GtkTreePath *path)
return path->indices;
}
/**
* gtk_tree_path_get_indices_with_depth:
* @path: A #GtkTreePath.
* @depth: Number of elements returned in the integer array
*
* Returns the current indices of @path.
* This is an array of integers, each representing a node in a tree.
* It also returns the number of elements in the array.
* The array should not be freed.
*
* Return value: (array length=depth): The current indices, or %NULL.
*
* Since: 3.0
**/
gint *
gtk_tree_path_get_indices_with_depth (GtkTreePath *path, gint *depth)
{
g_return_val_if_fail (path != NULL, NULL);
if (depth)
*depth = path->depth;
return path->indices;
}
/**
* gtk_tree_path_free:
* @path: A #GtkTreePath.

View File

@ -134,6 +134,10 @@ void gtk_tree_path_prepend_index (GtkTreePath *path,
gint index_);
gint gtk_tree_path_get_depth (GtkTreePath *path);
gint *gtk_tree_path_get_indices (GtkTreePath *path);
gint *gtk_tree_path_get_indices_with_depth (GtkTreePath *path,
gint *depth);
void gtk_tree_path_free (GtkTreePath *path);
GtkTreePath *gtk_tree_path_copy (const GtkTreePath *path);
GType gtk_tree_path_get_type (void) G_GNUC_CONST;