aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarren Hart <dvhltc@us.ibm.com>2010-01-04 20:24:40 -0500
committerSteven Rostedt <rostedt@goodmis.org>2010-01-04 23:40:01 -0500
commitf18df1531e4da5685dd7441811c57ba96af0c055 (patch)
tree2242961f5858ec93e40da1f14c8d1fae406b1f70
parent92dc18ac5f87593464b997070562e8305b1764fa (diff)
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 <dvhltc@us.ibm.com> LKML-Reference: <1262654682-20325-2-git-send-email-dvhltc@us.ibm.com> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r--trace-view-store.c27
-rw-r--r--trace-view-store.h2
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,
328{ 328{
329 TraceViewStore *trace_view_store; 329 TraceViewStore *trace_view_store;
330 TraceViewRecord *record; 330 TraceViewRecord *record;
331 gint *indices, n, depth, pos; 331 gint *indices, n, depth;
332 332
333 g_assert(TRACE_VIEW_IS_LIST(tree_model)); 333 g_assert(TRACE_VIEW_IS_LIST(tree_model));
334 g_assert(path!=NULL); 334 g_assert(path!=NULL);
@@ -343,17 +343,10 @@ trace_view_store_get_iter (GtkTreeModel *tree_model,
343 343
344 n = indices[0]; /* the n-th top level row */ 344 n = indices[0]; /* the n-th top level row */
345 345
346 if ( n >= trace_view_store->num_rows || n < 0 ) 346 record = trace_view_store_get_row(trace_view_store, n);
347 if (!record)
347 return FALSE; 348 return FALSE;
348 349
349 record = trace_view_store->rows[trace_view_store->start_row + n];
350
351 g_assert(record != NULL);
352
353 pos = record->pos - trace_view_store->start_row;
354
355 g_assert(pos == n);
356
357 /* We simply store a pointer to our custom record in the iter */ 350 /* We simply store a pointer to our custom record in the iter */
358 iter->stamp = trace_view_store->stamp; 351 iter->stamp = trace_view_store->stamp;
359 iter->user_data = record; 352 iter->user_data = record;
@@ -1081,6 +1074,20 @@ guint64 trace_view_store_get_offset_from_row(TraceViewStore *store, gint row)
1081 return store->rows[row]->offset; 1074 return store->rows[row]->offset;
1082} 1075}
1083 1076
1077TraceViewRecord *
1078trace_view_store_get_row(TraceViewStore *store, gint row)
1079{
1080 TraceViewRecord *record;
1081
1082 if (row >= store->num_rows || row < 0)
1083 return NULL;
1084
1085 record = store->rows[store->start_row + row];
1086 g_assert(record != NULL);
1087 g_assert((record->pos - store->start_row) == row);
1088 return record;
1089}
1090
1084gint get_next_pid(TraceViewStore *store, struct pevent *pevent, struct record *record) 1091gint get_next_pid(TraceViewStore *store, struct pevent *pevent, struct record *record)
1085{ 1092{
1086 unsigned long long val; 1093 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);
123 123
124void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter); 124void trace_view_store_filter_tasks(TraceViewStore *store, struct filter_task *filter);
125 125
126TraceViewRecord *trace_view_store_get_row(TraceViewStore *store, gint row);
127
126/* TraceViewStoreClass: more boilerplate GObject stuff */ 128/* TraceViewStoreClass: more boilerplate GObject stuff */
127 129
128struct _TraceViewStoreClass 130struct _TraceViewStoreClass