blob: a9c799a7428b367c4581d3f51f46120d460d5429 [file] [log] [blame]
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +00001//===-- SBTraceOptions.cpp --------------------------------------*- C++ -*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// 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
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +00006//
7//===----------------------------------------------------------------------===//
8
9#include "lldb/API/SBTraceOptions.h"
Jonas Devliegherebaf56642019-03-06 00:06:00 +000010#include "SBReproducerPrivate.h"
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000011#include "lldb/API/SBError.h"
12#include "lldb/API/SBStructuredData.h"
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000013#include "lldb/Core/StructuredDataImpl.h"
Pavel Labath38d06322017-06-29 14:32:17 +000014#include "lldb/Utility/Log.h"
15#include "lldb/Utility/TraceOptions.h"
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000016
Jonas Devlieghere796ac802019-02-11 23:13:08 +000017#include <memory>
18
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000019using namespace lldb;
20using namespace lldb_private;
21
22SBTraceOptions::SBTraceOptions() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000023 LLDB_RECORD_CONSTRUCTOR_NO_ARGS(SBTraceOptions);
24
Jonas Devlieghere796ac802019-02-11 23:13:08 +000025 m_traceoptions_sp = std::make_shared<TraceOptions>();
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000026}
27
28lldb::TraceType SBTraceOptions::getType() const {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000029 LLDB_RECORD_METHOD_CONST_NO_ARGS(lldb::TraceType, SBTraceOptions, getType);
30
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000031 if (m_traceoptions_sp)
32 return m_traceoptions_sp->getType();
33 return lldb::TraceType::eTraceTypeNone;
34}
35
36uint64_t SBTraceOptions::getTraceBufferSize() const {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000037 LLDB_RECORD_METHOD_CONST_NO_ARGS(uint64_t, SBTraceOptions,
38 getTraceBufferSize);
39
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000040 if (m_traceoptions_sp)
41 return m_traceoptions_sp->getTraceBufferSize();
42 return 0;
43}
44
45lldb::SBStructuredData SBTraceOptions::getTraceParams(lldb::SBError &error) {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000046 LLDB_RECORD_METHOD(lldb::SBStructuredData, SBTraceOptions, getTraceParams,
47 (lldb::SBError &), error);
48
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000049 error.Clear();
50 const lldb_private::StructuredData::DictionarySP dict_obj =
51 m_traceoptions_sp->getTraceParams();
52 lldb::SBStructuredData structData;
53 if (dict_obj && structData.m_impl_up)
54 structData.m_impl_up->SetObjectSP(dict_obj->shared_from_this());
55 else
56 error.SetErrorString("Empty trace params");
Jonas Devliegherebaf56642019-03-06 00:06:00 +000057 return LLDB_RECORD_RESULT(structData);
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000058}
59
60uint64_t SBTraceOptions::getMetaDataBufferSize() const {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000061 LLDB_RECORD_METHOD_CONST_NO_ARGS(uint64_t, SBTraceOptions,
62 getMetaDataBufferSize);
63
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000064 if (m_traceoptions_sp)
65 return m_traceoptions_sp->getTraceBufferSize();
66 return 0;
67}
68
69void SBTraceOptions::setTraceParams(lldb::SBStructuredData &params) {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000070 LLDB_RECORD_METHOD(void, SBTraceOptions, setTraceParams,
71 (lldb::SBStructuredData &), params);
72
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000073 if (m_traceoptions_sp && params.m_impl_up) {
74 StructuredData::ObjectSP obj_sp = params.m_impl_up->GetObjectSP();
75 if (obj_sp && obj_sp->GetAsDictionary() != nullptr)
76 m_traceoptions_sp->setTraceParams(
77 std::static_pointer_cast<StructuredData::Dictionary>(obj_sp));
78 }
79 return;
80}
81
82void SBTraceOptions::setType(lldb::TraceType type) {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000083 LLDB_RECORD_METHOD(void, SBTraceOptions, setType, (lldb::TraceType), type);
84
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000085 if (m_traceoptions_sp)
86 m_traceoptions_sp->setType(type);
87}
88
89void SBTraceOptions::setTraceBufferSize(uint64_t size) {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000090 LLDB_RECORD_METHOD(void, SBTraceOptions, setTraceBufferSize, (uint64_t),
91 size);
92
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +000093 if (m_traceoptions_sp)
94 m_traceoptions_sp->setTraceBufferSize(size);
95}
96
97void SBTraceOptions::setMetaDataBufferSize(uint64_t size) {
Jonas Devliegherebaf56642019-03-06 00:06:00 +000098 LLDB_RECORD_METHOD(void, SBTraceOptions, setMetaDataBufferSize, (uint64_t),
99 size);
100
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +0000101 if (m_traceoptions_sp)
102 m_traceoptions_sp->setMetaDataBufferSize(size);
103}
104
105bool SBTraceOptions::IsValid() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000106 LLDB_RECORD_METHOD_NO_ARGS(bool, SBTraceOptions, IsValid);
107
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +0000108 if (m_traceoptions_sp)
109 return true;
110 return false;
111}
112
113void SBTraceOptions::setThreadID(lldb::tid_t thread_id) {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000114 LLDB_RECORD_METHOD(void, SBTraceOptions, setThreadID, (lldb::tid_t),
115 thread_id);
116
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +0000117 if (m_traceoptions_sp)
118 m_traceoptions_sp->setThreadID(thread_id);
119}
120
121lldb::tid_t SBTraceOptions::getThreadID() {
Jonas Devliegherebaf56642019-03-06 00:06:00 +0000122 LLDB_RECORD_METHOD_NO_ARGS(lldb::tid_t, SBTraceOptions, getThreadID);
123
Ravitheja Addepallyd5d8d912017-04-26 08:48:50 +0000124 if (m_traceoptions_sp)
125 return m_traceoptions_sp->getThreadID();
126 return LLDB_INVALID_THREAD_ID;
127}