1*bdd1243dSDimitry Andric //===-- SBTraceCursor.cpp 2*bdd1243dSDimitry Andric //-------------------------------------------------------===// 3*bdd1243dSDimitry Andric // 4*bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5*bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 6*bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7*bdd1243dSDimitry Andric // 8*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===// 9*bdd1243dSDimitry Andric 10*bdd1243dSDimitry Andric #include "lldb/API/SBTraceCursor.h" 11*bdd1243dSDimitry Andric #include "Utils.h" 12*bdd1243dSDimitry Andric #include "lldb/Utility/Instrumentation.h" 13*bdd1243dSDimitry Andric #include "lldb/Target/TraceCursor.h" 14*bdd1243dSDimitry Andric 15*bdd1243dSDimitry Andric using namespace lldb; 16*bdd1243dSDimitry Andric using namespace lldb_private; 17*bdd1243dSDimitry Andric 18*bdd1243dSDimitry Andric SBTraceCursor::SBTraceCursor() { LLDB_INSTRUMENT_VA(this); } 19*bdd1243dSDimitry Andric 20*bdd1243dSDimitry Andric SBTraceCursor::SBTraceCursor(TraceCursorSP trace_cursor_sp) 21*bdd1243dSDimitry Andric : m_opaque_sp{std::move(trace_cursor_sp)} { 22*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this, trace_cursor_sp); 23*bdd1243dSDimitry Andric } 24*bdd1243dSDimitry Andric 25*bdd1243dSDimitry Andric void SBTraceCursor::SetForwards(bool forwards) { 26*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this, forwards); 27*bdd1243dSDimitry Andric 28*bdd1243dSDimitry Andric m_opaque_sp->SetForwards(forwards); 29*bdd1243dSDimitry Andric } 30*bdd1243dSDimitry Andric 31*bdd1243dSDimitry Andric bool SBTraceCursor::IsForwards() const { 32*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 33*bdd1243dSDimitry Andric 34*bdd1243dSDimitry Andric return m_opaque_sp->IsForwards(); 35*bdd1243dSDimitry Andric } 36*bdd1243dSDimitry Andric 37*bdd1243dSDimitry Andric void SBTraceCursor::Next() { 38*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 39*bdd1243dSDimitry Andric 40*bdd1243dSDimitry Andric return m_opaque_sp->Next(); 41*bdd1243dSDimitry Andric } 42*bdd1243dSDimitry Andric 43*bdd1243dSDimitry Andric bool SBTraceCursor::HasValue() const { 44*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 45*bdd1243dSDimitry Andric 46*bdd1243dSDimitry Andric return m_opaque_sp->HasValue(); 47*bdd1243dSDimitry Andric } 48*bdd1243dSDimitry Andric 49*bdd1243dSDimitry Andric bool SBTraceCursor::GoToId(lldb::user_id_t id) { 50*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this, id); 51*bdd1243dSDimitry Andric 52*bdd1243dSDimitry Andric return m_opaque_sp->GoToId(id); 53*bdd1243dSDimitry Andric } 54*bdd1243dSDimitry Andric 55*bdd1243dSDimitry Andric bool SBTraceCursor::HasId(lldb::user_id_t id) const { 56*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this, id); 57*bdd1243dSDimitry Andric 58*bdd1243dSDimitry Andric return m_opaque_sp->HasId(id); 59*bdd1243dSDimitry Andric } 60*bdd1243dSDimitry Andric 61*bdd1243dSDimitry Andric lldb::user_id_t SBTraceCursor::GetId() const { 62*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 63*bdd1243dSDimitry Andric 64*bdd1243dSDimitry Andric return m_opaque_sp->GetId(); 65*bdd1243dSDimitry Andric } 66*bdd1243dSDimitry Andric 67*bdd1243dSDimitry Andric bool SBTraceCursor::Seek(int64_t offset, lldb::TraceCursorSeekType origin) { 68*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this, offset); 69*bdd1243dSDimitry Andric 70*bdd1243dSDimitry Andric return m_opaque_sp->Seek(offset, origin); 71*bdd1243dSDimitry Andric } 72*bdd1243dSDimitry Andric 73*bdd1243dSDimitry Andric lldb::TraceItemKind SBTraceCursor::GetItemKind() const { 74*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 75*bdd1243dSDimitry Andric 76*bdd1243dSDimitry Andric return m_opaque_sp->GetItemKind(); 77*bdd1243dSDimitry Andric } 78*bdd1243dSDimitry Andric 79*bdd1243dSDimitry Andric bool SBTraceCursor::IsError() const { 80*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 81*bdd1243dSDimitry Andric 82*bdd1243dSDimitry Andric return m_opaque_sp->IsError(); 83*bdd1243dSDimitry Andric } 84*bdd1243dSDimitry Andric 85*bdd1243dSDimitry Andric const char *SBTraceCursor::GetError() const { 86*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 87*bdd1243dSDimitry Andric 88*bdd1243dSDimitry Andric return m_opaque_sp->GetError(); 89*bdd1243dSDimitry Andric } 90*bdd1243dSDimitry Andric 91*bdd1243dSDimitry Andric bool SBTraceCursor::IsEvent() const { 92*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 93*bdd1243dSDimitry Andric 94*bdd1243dSDimitry Andric return m_opaque_sp->IsEvent(); 95*bdd1243dSDimitry Andric } 96*bdd1243dSDimitry Andric 97*bdd1243dSDimitry Andric lldb::TraceEvent SBTraceCursor::GetEventType() const { 98*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 99*bdd1243dSDimitry Andric 100*bdd1243dSDimitry Andric return m_opaque_sp->GetEventType(); 101*bdd1243dSDimitry Andric } 102*bdd1243dSDimitry Andric 103*bdd1243dSDimitry Andric const char *SBTraceCursor::GetEventTypeAsString() const { 104*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 105*bdd1243dSDimitry Andric 106*bdd1243dSDimitry Andric return m_opaque_sp->GetEventTypeAsString(); 107*bdd1243dSDimitry Andric } 108*bdd1243dSDimitry Andric 109*bdd1243dSDimitry Andric bool SBTraceCursor::IsInstruction() const { 110*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 111*bdd1243dSDimitry Andric 112*bdd1243dSDimitry Andric return m_opaque_sp->IsInstruction(); 113*bdd1243dSDimitry Andric } 114*bdd1243dSDimitry Andric 115*bdd1243dSDimitry Andric lldb::addr_t SBTraceCursor::GetLoadAddress() const { 116*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 117*bdd1243dSDimitry Andric 118*bdd1243dSDimitry Andric return m_opaque_sp->GetLoadAddress(); 119*bdd1243dSDimitry Andric } 120*bdd1243dSDimitry Andric 121*bdd1243dSDimitry Andric lldb::cpu_id_t SBTraceCursor::GetCPU() const { 122*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 123*bdd1243dSDimitry Andric 124*bdd1243dSDimitry Andric return m_opaque_sp->GetCPU(); 125*bdd1243dSDimitry Andric } 126*bdd1243dSDimitry Andric 127*bdd1243dSDimitry Andric bool SBTraceCursor::IsValid() const { 128*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 129*bdd1243dSDimitry Andric 130*bdd1243dSDimitry Andric return this->operator bool(); 131*bdd1243dSDimitry Andric } 132*bdd1243dSDimitry Andric 133*bdd1243dSDimitry Andric SBTraceCursor::operator bool() const { 134*bdd1243dSDimitry Andric LLDB_INSTRUMENT_VA(this); 135*bdd1243dSDimitry Andric 136*bdd1243dSDimitry Andric return m_opaque_sp.get() != nullptr; 137*bdd1243dSDimitry Andric } 138