+
+XBT_INLINE tmgr_history_t tmgr_history_new(void)
+{
+ tmgr_history_t h;
+
+ h = xbt_new0(s_tmgr_history_t, 1);
+
+ h->heap = xbt_heap_new(8, xbt_free_f); /* Why 8 ? Well, why not... */
+
+ return h;
+}
+
+XBT_INLINE void tmgr_history_free(tmgr_history_t h)
+{
+ xbt_heap_free(h->heap);
+ free(h);
+}
+
+tmgr_trace_t tmgr_trace_new_from_generator(const char *id,
+ probabilist_event_generator_t generator1,
+ probabilist_event_generator_t generator2,
+ int is_state_trace)
+{
+ tmgr_trace_t trace = NULL;
+
+ trace = xbt_new0(s_tmgr_trace_t, 1);
+ trace->type = e_trace_probabilist;
+
+ trace->s_probabilist.event_generator[0] = generator1;
+
+ //FIXME : may also be a parameter
+ trace->s_probabilist.next_event = 0;
+ trace->s_probabilist.is_state_trace = is_state_trace;
+
+ if(generator2 != NULL) {
+ trace->s_probabilist.event_generator[1] = generator2;
+ } else if(is_state_trace) {
+ trace->s_probabilist.event_generator[1] = generator1;
+ } else {
+ THROW_IMPOSSIBLE; //That case should have been checked before, anyway...
+ }
+
+ return trace;
+}
+
+probabilist_event_generator_t tmgr_event_generator_new_uniform(const char* id,
+ double min,
+ double max)