Initial commit for control flow view
[lttv.git] / lttv / lttv / traceset.c
index 2c99c061f4c055e1582758f4d3fdf5b8f87a4998..542101607d064d61fd322fc97409fb425bcff3c1 100644 (file)
@@ -68,6 +68,7 @@ LttvTraceset *lttv_traceset_new(void)
        ts->event_hooks = lttv_hooks_new();
 
        ts->state_trace_handle_index = g_ptr_array_new();
+       ts->has_precomputed_states = FALSE;
 
        return ts;
 }
@@ -614,6 +615,8 @@ guint64 lttv_traceset_position_get_timestamp(const LttvTracesetPosition *pos)
        }
         /* Reassign the previously saved position */
         lttv_traceset_seek_to_position(&previous_pos);
+        /*We must desallocate because the function bt_iter_get_pos() does a g_new */
+        bt_iter_free_pos(previous_pos.bt_pos);
        return timestamp;
 }
 
@@ -622,6 +625,8 @@ LttTime  lttv_traceset_position_get_time(const LttvTracesetPosition *pos)
         return ltt_time_from_uint64(lttv_traceset_position_get_timestamp(pos));
 }
 
+
+
 int lttv_traceset_position_compare(const LttvTracesetPosition *pos1, const LttvTracesetPosition *pos2)
 {
 #warning " TODO :Rename for lttv_traceset_position_equals && Must return COMPARAISON OF THE 2 POSITION && verify if it is the best way to compare position"
@@ -654,3 +659,35 @@ int lttv_traceset_position_compare(const LttvTracesetPosition *pos1, const LttvT
                 return 1;
        }
 }
+
+int lttv_traceset_position_time_compare(const LttvTracesetPosition *pos1, 
+                                       const LttvTracesetPosition *pos2)
+{
+        guint64 timeStampPos1,timeStampPos2;
+
+       timeStampPos1 = lttv_traceset_position_get_timestamp(pos1);
+        timeStampPos2 = lttv_traceset_position_get_timestamp(pos2);
+        
+       return timeStampPos1 - timeStampPos2;
+}
+int lttv_traceset_position_compare_current(const LttvTraceset *ts, 
+                                          const LttvTracesetPosition *pos)
+{
+       int result = 0;
+       LttvTracesetPosition *curPos = lttv_traceset_create_current_position(ts);
+
+       result = lttv_traceset_position_compare(curPos,pos);
+
+       lttv_traceset_destroy_position(curPos);
+
+       return result;
+}
+
+LttTime lttv_traceset_get_current_time(const LttvTraceset *ts)
+{
+       LttvTracesetPosition *curPos = lttv_traceset_create_current_position(ts);
+       guint64 currentTimestamp = lttv_traceset_position_get_timestamp(curPos);
+       lttv_traceset_destroy_position(curPos);
+
+        return ltt_time_from_uint64(currentTimestamp);
+}
This page took 0.024305 seconds and 4 git commands to generate.