dc877563 |
1 | |
2 | #include <lttv/traceset.h> |
3 | |
4 | /* A trace is a sequence of events gathered in the same tracing session. The |
5 | events may be stored in several tracefiles in the same directory. |
6 | A trace set is defined when several traces are to be analyzed together, |
7 | possibly to study the interactions between events in the different traces. |
8 | */ |
9 | |
10 | struct _LttvTraceset { |
11 | GPtrArray *traces; |
12 | GPtrArray *attributes; |
13 | LttvAttribute *a; |
14 | }; |
15 | |
16 | |
17 | LttvTraceset *lttv_trace_set_new() |
18 | { |
19 | LttvTraceset s; |
20 | |
21 | s = g_new(LttvTraceset, 1); |
22 | s->traces = g_ptr_array_new(); |
23 | s->attributes = g_ptr_array_new(); |
24 | s->a = g_object_new(LTTV_ATTRIBUTE_TYPE); |
25 | } |
26 | |
27 | |
28 | LttvTraceset *lttv_traceset_destroy(LttvTraceset *s) |
29 | { |
30 | int i, nb; |
31 | |
32 | for(i = 0 ; i < s->attributes->len ; i++) { |
33 | lttv_attribute_free((lttv_attributes *)s->attributes->pdata[i]); |
34 | } |
35 | g_ptr_array_free(s->attributes); |
36 | g_ptr_array_free(s->traces); |
37 | lttv_attribute_free(s->a); |
38 | return g_free(s); |
39 | } |
40 | |
41 | |
42 | void lttv_traceset_add(LttvTraceset *s, LttTrace *t) |
43 | { |
44 | g_ptr_array_add(s->traces, t); |
45 | g_ptr_array_add(s->attributes, g_object_new(LTTV_ATTRIBUTE_TYPE)); |
46 | } |
47 | |
48 | |
49 | unsigned lttv_traceset_number(LttvTraceset *s) |
50 | { |
51 | return s->traces.len; |
52 | } |
53 | |
54 | |
55 | LttTrace *lttv_traceset_get(LttvTraceset *s, unsigned i) |
56 | { |
57 | g_assert(s->traces->len > i); |
58 | return ((LttTrace *)s->traces.pdata[i]); |
59 | } |
60 | |
61 | |
62 | LttTrace *lttv_traceset_remove(LttvTraceset *s, unsigned i) |
63 | { |
64 | return g_ptr_array_remove_index(s->traces, i); |
65 | lttv_attribute_free(g_ptr_array_remove_index(s->attributes,i)); |
66 | } |
67 | |
68 | |
69 | /* A set of attributes is attached to each trace set, trace and tracefile |
70 | to store user defined data as needed. */ |
71 | |
72 | LttvAttribute *lttv_traceset_attribute(LttvTraceset *s) |
73 | { |
74 | return s->a; |
75 | } |
76 | |
77 | |
78 | LttvAttribute *lttv_traceset_trace_attribute(LttvTraceset *s, unsigned i) |
79 | { |
80 | return (LttAttribute *)s->attributes->pdata[i]; |
81 | } |
82 | |
83 | |