xref: /freebsd-src/contrib/llvm-project/lldb/source/API/SBTraceCursor.cpp (revision bdd1243df58e60e85101c09001d9812a789b6bc4)
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