1 //===-- TraceCursor.cpp -----------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "lldb/Target/TraceCursor.h" 10 11 #include "lldb/Target/ExecutionContext.h" 12 13 using namespace lldb; 14 using namespace lldb_private; 15 using namespace llvm; 16 17 TraceCursor::TraceCursor(lldb::ThreadSP thread_sp) 18 : m_exe_ctx_ref(ExecutionContext(thread_sp)) {} 19 20 ExecutionContextRef &TraceCursor::GetExecutionContextRef() { 21 return m_exe_ctx_ref; 22 } 23 24 void TraceCursor::SetForwards(bool forwards) { m_forwards = forwards; } 25 26 bool TraceCursor::IsForwards() const { return m_forwards; } 27 28 const char *trace_event_utils::EventToDisplayString(lldb::TraceEvents event) { 29 switch (event) { 30 case lldb::eTraceEventPaused: 31 return "paused"; 32 } 33 return nullptr; 34 } 35 36 void trace_event_utils::ForEachEvent( 37 lldb::TraceEvents events, 38 std::function<void(lldb::TraceEvents event)> callback) { 39 while (events) { 40 TraceEvents event = static_cast<TraceEvents>(events & ~(events - 1)); 41 callback(event); 42 events &= ~event; 43 } 44 } 45