From 33194ff5f46e39db123c8a4668d3a4b0bde48ecd Mon Sep 17 00:00:00 2001 From: "John (J5) Palmieri" Date: Tue, 27 Apr 2010 17:12:41 -0400 Subject: [PATCH] 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) --- docs/reference/gtk/gtk-sections.txt | 1 + docs/reference/gtk/tmpl/gtktreemodel.sgml | 10 +++++++++ gtk/gtk.symbols | 1 + gtk/gtktreemodel.c | 25 +++++++++++++++++++++++ gtk/gtktreemodel.h | 4 ++++ 5 files changed, 41 insertions(+) diff --git a/docs/reference/gtk/gtk-sections.txt b/docs/reference/gtk/gtk-sections.txt index b5235901f7..684b30db99 100644 --- a/docs/reference/gtk/gtk-sections.txt +++ b/docs/reference/gtk/gtk-sections.txt @@ -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 diff --git a/docs/reference/gtk/tmpl/gtktreemodel.sgml b/docs/reference/gtk/tmpl/gtktreemodel.sgml index e16a9fdb79..d635009210 100644 --- a/docs/reference/gtk/tmpl/gtktreemodel.sgml +++ b/docs/reference/gtk/tmpl/gtktreemodel.sgml @@ -412,6 +412,16 @@ compatibility reasons. @Returns: + + + + + +@path: +@depth: +@Returns: + + diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index ccda44841f..a285bfde05 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -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 diff --git a/gtk/gtktreemodel.c b/gtk/gtktreemodel.c index 5bdce35479..bf45a31f97 100644 --- a/gtk/gtktreemodel.c +++ b/gtk/gtktreemodel.c @@ -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. diff --git a/gtk/gtktreemodel.h b/gtk/gtktreemodel.h index b48e87b642..ba0fe4ef3e 100644 --- a/gtk/gtktreemodel.h +++ b/gtk/gtktreemodel.h @@ -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;