bool ExistsAnyThread() { all_threads_mutex.Lock(); bool result = !all_threads.IsEmpty(); all_threads_mutex.Unlock(); return result; }
const_reverse_iterator rend() const { return chronological_list.rend(); }
const_reverse_iterator rbegin() const { return chronological_list.rbegin(); }
const_iterator end() const { return chronological_list.end(); }
const_iterator begin() const { return chronological_list.begin(); }
const TracePoint &back() const { assert(!empty()); return static_cast<const TraceDelta *>(chronological_list.GetPrevious())->point; }
const TracePoint &front() const { assert(!empty()); return static_cast<const TraceDelta *>(chronological_list.GetNext())->point; }
/** * Whether traces store is empty * * @return True if no traces stored */ bool empty() const { return chronological_list.IsEmpty(); }
TraceDelta &GetBack() { assert(!empty()); return *static_cast<TraceDelta *>(chronological_list.GetPrevious()); }
TraceDelta &GetFront() { assert(!empty()); return *static_cast<TraceDelta *>(chronological_list.GetNext()); }