java.lang.Object
org.eclipse.tracecompass.incubator.callstack.core.instrumented.statesystem.CallStackSeries
All Implemented Interfaces:
Iterable<ISegment>, Collection<ISegment>, ISegmentStore<ISegment>

public class CallStackSeries extends Object implements ISegmentStore<ISegment>
A callstack series contain the information necessary to build all the different callstacks from a same pattern. Example: Let's take a trace that registers function entry and exit for threads and where events also provide information on some other stackable application component: The structure of this callstack in the state system could be as follows:
  Per PID
    [pid]
        [tid]
            callstack
               1  -> function name
               2  -> function name
               3  -> function name
  Per component
    [application component]
       [tid]
           callstack
               1 -> some string
               2 -> some string
 
There are 2 CallStackSeries in this example, one starting by "Per PID" and another "Per component". For the first series, there could be 3 ICallStackGroupDescriptor: "Per PID/*", "*", "callstack". If the function names happen to be addresses in an executable and the PID is the key to map those symbols to actual function names, then the first group "Per PID/*" would be the symbol key group. Each group descriptor can get the corresponding ICallStackElements, ie, for the first group, it would be all the individual pids in the state system, and for the second group, it would be the application components. Each element that is not a leaf element (check with ICallStackElement.isLeaf()) will have a next group descriptor that can fetch the elements under it. The last group will resolve to leaf elements and each leaf elements has one CallStack object.
Author:
Geneviève Bastien