Esempio n. 1
0
void 
TraceCollection::_Iterate(Visitor& visitor, bool doReverse) const {
    KeyTokenCache cache;
    visitor.OnBeginCollection();
    for (const EventTable::value_type& i : _eventsPerThread) {
        const TraceThreadId& threadIndex = i.first;
        const EventListPtr &events = i.second;
        visitor.OnBeginThread(threadIndex);
        
        if (doReverse) {
            _IterateEvents(visitor, cache, 
                threadIndex, events->rbegin(), events->rend());
        }
        else {
            _IterateEvents(visitor, cache, 
                threadIndex, events->begin(), events->end());
        }

        visitor.OnEndThread(threadIndex);
    }
    visitor.OnEndCollection();
}