xref: /llvm-project/lldb/source/API/SBTraceCursor.cpp (revision 41714c959d65ff1dd842bc0a0d44f90b06440c39)
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 Johnson SBTraceCursor::SBTraceCursor() { LLDB_INSTRUMENT_VA(this); }
19f9b4ea0cSJakob Johnson 
SBTraceCursor(TraceCursorSP trace_cursor_sp)20f9b4ea0cSJakob Johnson SBTraceCursor::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 Johnson void 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 Johnson bool SBTraceCursor::IsForwards() const {
32f9b4ea0cSJakob Johnson   LLDB_INSTRUMENT_VA(this);
336a48dc09SJonas Devlieghere 
34f9b4ea0cSJakob Johnson   return m_opaque_sp->IsForwards();
35f9b4ea0cSJakob Johnson }
36f9b4ea0cSJakob Johnson 
Next()37f9b4ea0cSJakob Johnson void SBTraceCursor::Next() {
38f9b4ea0cSJakob Johnson   LLDB_INSTRUMENT_VA(this);
396a48dc09SJonas Devlieghere 
40f9b4ea0cSJakob Johnson   return m_opaque_sp->Next();
41f9b4ea0cSJakob Johnson }
42f9b4ea0cSJakob Johnson 
HasValue() const43f9b4ea0cSJakob Johnson bool 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 Johnson bool 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 Johnson bool 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 Johnson lldb::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 Johnson bool 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 Johnson lldb::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 Johnson bool SBTraceCursor::IsError() const {
80f9b4ea0cSJakob Johnson   LLDB_INSTRUMENT_VA(this);
816a48dc09SJonas Devlieghere 
82f9b4ea0cSJakob Johnson   return m_opaque_sp->IsError();
83f9b4ea0cSJakob Johnson }
84f9b4ea0cSJakob Johnson 
GetError() const85f9b4ea0cSJakob Johnson const 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 Johnson bool SBTraceCursor::IsEvent() const {
92f9b4ea0cSJakob Johnson   LLDB_INSTRUMENT_VA(this);
936a48dc09SJonas Devlieghere 
94f9b4ea0cSJakob Johnson   return m_opaque_sp->IsEvent();
95f9b4ea0cSJakob Johnson }
96f9b4ea0cSJakob Johnson 
GetEventType() const97f9b4ea0cSJakob Johnson lldb::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 Johnson const 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 Johnson bool SBTraceCursor::IsInstruction() const {
110f9b4ea0cSJakob Johnson   LLDB_INSTRUMENT_VA(this);
1116a48dc09SJonas Devlieghere 
112f9b4ea0cSJakob Johnson   return m_opaque_sp->IsInstruction();
113f9b4ea0cSJakob Johnson }
114f9b4ea0cSJakob Johnson 
GetLoadAddress() const115f9b4ea0cSJakob Johnson lldb::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 Johnson lldb::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 Johnson bool SBTraceCursor::IsValid() const {
128f9b4ea0cSJakob Johnson   LLDB_INSTRUMENT_VA(this);
1296a48dc09SJonas Devlieghere 
130f9b4ea0cSJakob Johnson   return this->operator bool();
131f9b4ea0cSJakob Johnson }
132f9b4ea0cSJakob Johnson 
operator bool() const133f9b4ea0cSJakob Johnson SBTraceCursor::operator bool() const {
134f9b4ea0cSJakob Johnson   LLDB_INSTRUMENT_VA(this);
135f9b4ea0cSJakob Johnson 
136f9b4ea0cSJakob Johnson   return m_opaque_sp.get() != nullptr;
137f9b4ea0cSJakob Johnson }
138