From f18df1531e4da5685dd7441811c57ba96af0c055 Mon Sep 17 00:00:00 2001 From: Darren Hart Date: Mon, 4 Jan 2010 17:24:40 -0800 Subject: trace-view: Add trace_view_store_get_row() convenience function trace_view_get_row() encapsulates some of the bounds checking and provides a Python friendly way to access the store rows. Signed-off-by: Darren Hart LKML-Reference: <1262654682-20325-2-git-send-email-dvhltc@us.ibm.com> Signed-off-by: Steven Rostedt --- trace-view-store.c | 27 +++++++++++++++++---------- trace-view-store.h | 2 ++ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/trace-view-store.c b/trace-view-store.c index 253c61a..b167cc9 100644 --- a/trace-view-store.c +++ b/trace-view-store.c @@ -328,7 +328,7 @@ trace_view_store_get_iter (GtkTreeModel *tree_model, { TraceViewStore *trace_view_store; TraceViewRecord *record; - gint *indices, n, depth, pos; + gint *indices, n, depth; g_assert(TRACE_VIEW_IS_LIST(tree_model)); g_assert(path!=NULL); @@ -343,17 +343,10 @@ trace_view_store_get_iter (GtkTreeModel *tree_model, n = indices[0]; /* the n-th top level row */ - if ( n >= trace_view_store->num_rows || n < 0 ) + record = trace_view_store_get_row(trace_view_store, n); + if (!record) return FALSE; - record = trace_view_store->rows[trace_view_store->start_row + n]; - - g_assert(record != NULL); - - pos = record->pos - trace_view_store->start_row; - - g_assert(pos == n); - /* We simply store a pointer to our custom record in the iter */ iter->stamp = trace_view_store->stamp; iter->user_data = record; @@ -1081,6 +1074,20 @@ guint64 trace_view_store_get_offset_from_row(TraceViewStore *store, gint row) return store->rows[row]->offset; } +TraceViewRecord * +trace_view_store_get_row(TraceViewStore *store, gint row) +{ + TraceViewRecord *record; + + if (row >= store->num_rows || row < 0) + return NULL; + + record = store->rows[store->start_row + row]; + g_assert(record != NULL); + g_assert((record->pos - store->start_row) == row); + return record; +} + gint get_next_pid(TraceViewStore *store, struct pevent *pevent, struct record *record) { unsigned long long val; diff --git a/trace-view-store.h b/trace-view-store.h index 974223b..53e0b37 100644 --- a/trace-view-store.h +++ b/trace-view-store.h @@ -123,6 +123,8 @@ guint64 trace_view_store_get_offset_from_row(TraceViewStore *store, gint row); void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter); +TraceViewRecord *trace_view_store_get_row(TraceViewStore *store, gint row); + /* TraceViewStoreClass: more boilerplate GObject stuff */ struct _TraceViewStoreClass -- cgit v1.2.2