1f9b4ea0cSJakob Johnson //===-- SBTraceCursor.cpp 2f9b4ea0cSJakob Johnson //-------------------------------------------------------===// 3f9b4ea0cSJakob Johnson // 4f9b4ea0cSJakob Johnson // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5f9b4ea0cSJakob Johnson // See https://llvm.org/LICENSE.txt for license information. 6f9b4ea0cSJakob Johnson // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7f9b4ea0cSJakob Johnson // 8f9b4ea0cSJakob Johnson //===----------------------------------------------------------------------===// 9f9b4ea0cSJakob Johnson 10f9b4ea0cSJakob Johnson #include "lldb/API/SBTraceCursor.h" 11f9b4ea0cSJakob Johnson #include "Utils.h" 12f9b4ea0cSJakob Johnson #include "lldb/Utility/Instrumentation.h" 13d8602bcdSWalter Erquinigo #include "lldb/Target/TraceCursor.h" 14f9b4ea0cSJakob Johnson 15f9b4ea0cSJakob Johnson using namespace lldb; 16f9b4ea0cSJakob Johnson using namespace lldb_private; 17f9b4ea0cSJakob Johnson SBTraceCursor()18f9b4ea0cSJakob JohnsonSBTraceCursor::SBTraceCursor() { LLDB_INSTRUMENT_VA(this); } 19f9b4ea0cSJakob Johnson SBTraceCursor(TraceCursorSP trace_cursor_sp)20f9b4ea0cSJakob JohnsonSBTraceCursor::SBTraceCursor(TraceCursorSP trace_cursor_sp) 21f9b4ea0cSJakob Johnson : m_opaque_sp{std::move(trace_cursor_sp)} { 22f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this, trace_cursor_sp); 23f9b4ea0cSJakob Johnson } 24f9b4ea0cSJakob Johnson SetForwards(bool forwards)25f9b4ea0cSJakob Johnsonvoid SBTraceCursor::SetForwards(bool forwards) { 26f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this, forwards); 276a48dc09SJonas Devlieghere 28f9b4ea0cSJakob Johnson m_opaque_sp->SetForwards(forwards); 29f9b4ea0cSJakob Johnson } 30f9b4ea0cSJakob Johnson IsForwards() const31f9b4ea0cSJakob Johnsonbool SBTraceCursor::IsForwards() const { 32f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 336a48dc09SJonas Devlieghere 34f9b4ea0cSJakob Johnson return m_opaque_sp->IsForwards(); 35f9b4ea0cSJakob Johnson } 36f9b4ea0cSJakob Johnson Next()37f9b4ea0cSJakob Johnsonvoid SBTraceCursor::Next() { 38f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 396a48dc09SJonas Devlieghere 40f9b4ea0cSJakob Johnson return m_opaque_sp->Next(); 41f9b4ea0cSJakob Johnson } 42f9b4ea0cSJakob Johnson HasValue() const43f9b4ea0cSJakob Johnsonbool SBTraceCursor::HasValue() const { 44f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 456a48dc09SJonas Devlieghere 46f9b4ea0cSJakob Johnson return m_opaque_sp->HasValue(); 47f9b4ea0cSJakob Johnson } 48f9b4ea0cSJakob Johnson GoToId(lldb::user_id_t id)49f9b4ea0cSJakob Johnsonbool SBTraceCursor::GoToId(lldb::user_id_t id) { 50f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this, id); 516a48dc09SJonas Devlieghere 52f9b4ea0cSJakob Johnson return m_opaque_sp->GoToId(id); 53f9b4ea0cSJakob Johnson } 54f9b4ea0cSJakob Johnson HasId(lldb::user_id_t id) const55f9b4ea0cSJakob Johnsonbool SBTraceCursor::HasId(lldb::user_id_t id) const { 56f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this, id); 576a48dc09SJonas Devlieghere 58f9b4ea0cSJakob Johnson return m_opaque_sp->HasId(id); 59f9b4ea0cSJakob Johnson } 60f9b4ea0cSJakob Johnson GetId() const61f9b4ea0cSJakob Johnsonlldb::user_id_t SBTraceCursor::GetId() const { 62f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 636a48dc09SJonas Devlieghere 64f9b4ea0cSJakob Johnson return m_opaque_sp->GetId(); 65f9b4ea0cSJakob Johnson } 66f9b4ea0cSJakob Johnson Seek(int64_t offset,lldb::TraceCursorSeekType origin)67f9b4ea0cSJakob Johnsonbool SBTraceCursor::Seek(int64_t offset, lldb::TraceCursorSeekType origin) { 68f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this, offset); 69f9b4ea0cSJakob Johnson 70f9b4ea0cSJakob Johnson return m_opaque_sp->Seek(offset, origin); 71f9b4ea0cSJakob Johnson } 72f9b4ea0cSJakob Johnson GetItemKind() const73f9b4ea0cSJakob Johnsonlldb::TraceItemKind SBTraceCursor::GetItemKind() const { 74f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 756a48dc09SJonas Devlieghere 76f9b4ea0cSJakob Johnson return m_opaque_sp->GetItemKind(); 77f9b4ea0cSJakob Johnson } 78f9b4ea0cSJakob Johnson IsError() const79f9b4ea0cSJakob Johnsonbool SBTraceCursor::IsError() const { 80f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 816a48dc09SJonas Devlieghere 82f9b4ea0cSJakob Johnson return m_opaque_sp->IsError(); 83f9b4ea0cSJakob Johnson } 84f9b4ea0cSJakob Johnson GetError() const85f9b4ea0cSJakob Johnsonconst char *SBTraceCursor::GetError() const { 86f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 876a48dc09SJonas Devlieghere 88*41714c95SAlex Langford return ConstString(m_opaque_sp->GetError()).GetCString(); 89f9b4ea0cSJakob Johnson } 90f9b4ea0cSJakob Johnson IsEvent() const91f9b4ea0cSJakob Johnsonbool SBTraceCursor::IsEvent() const { 92f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 936a48dc09SJonas Devlieghere 94f9b4ea0cSJakob Johnson return m_opaque_sp->IsEvent(); 95f9b4ea0cSJakob Johnson } 96f9b4ea0cSJakob Johnson GetEventType() const97f9b4ea0cSJakob Johnsonlldb::TraceEvent SBTraceCursor::GetEventType() const { 98f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 996a48dc09SJonas Devlieghere 100f9b4ea0cSJakob Johnson return m_opaque_sp->GetEventType(); 101f9b4ea0cSJakob Johnson } 102f9b4ea0cSJakob Johnson GetEventTypeAsString() const103f9b4ea0cSJakob Johnsonconst char *SBTraceCursor::GetEventTypeAsString() const { 104f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 1056a48dc09SJonas Devlieghere 106*41714c95SAlex Langford return ConstString(m_opaque_sp->GetEventTypeAsString()).GetCString(); 107f9b4ea0cSJakob Johnson } 108f9b4ea0cSJakob Johnson IsInstruction() const109f9b4ea0cSJakob Johnsonbool SBTraceCursor::IsInstruction() const { 110f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 1116a48dc09SJonas Devlieghere 112f9b4ea0cSJakob Johnson return m_opaque_sp->IsInstruction(); 113f9b4ea0cSJakob Johnson } 114f9b4ea0cSJakob Johnson GetLoadAddress() const115f9b4ea0cSJakob Johnsonlldb::addr_t SBTraceCursor::GetLoadAddress() const { 116f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 1176a48dc09SJonas Devlieghere 118f9b4ea0cSJakob Johnson return m_opaque_sp->GetLoadAddress(); 119f9b4ea0cSJakob Johnson } 120f9b4ea0cSJakob Johnson GetCPU() const121f9b4ea0cSJakob Johnsonlldb::cpu_id_t SBTraceCursor::GetCPU() const { 122f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 123f9b4ea0cSJakob Johnson 124f9b4ea0cSJakob Johnson return m_opaque_sp->GetCPU(); 125f9b4ea0cSJakob Johnson } 126f9b4ea0cSJakob Johnson IsValid() const127f9b4ea0cSJakob Johnsonbool SBTraceCursor::IsValid() const { 128f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 1296a48dc09SJonas Devlieghere 130f9b4ea0cSJakob Johnson return this->operator bool(); 131f9b4ea0cSJakob Johnson } 132f9b4ea0cSJakob Johnson operator bool() const133f9b4ea0cSJakob JohnsonSBTraceCursor::operator bool() const { 134f9b4ea0cSJakob Johnson LLDB_INSTRUMENT_VA(this); 135f9b4ea0cSJakob Johnson 136f9b4ea0cSJakob Johnson return m_opaque_sp.get() != nullptr; 137f9b4ea0cSJakob Johnson } 138