1915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata//===-- SBData.cpp ----------------------------------------------*- C++ -*-===// 2915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// 3915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// The LLVM Compiler Infrastructure 4915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// 5915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// This file is distributed under the University of Illinois Open Source 6915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// License. See LICENSE.TXT for details. 7915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// 8915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata//===----------------------------------------------------------------------===// 9915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 10915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#include "lldb/API/SBData.h" 11915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#include "lldb/API/SBError.h" 12915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#include "lldb/API/SBStream.h" 13915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 14a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton#include "lldb/Core/DataBufferHeap.h" 15915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#include "lldb/Core/DataExtractor.h" 16915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#include "lldb/Core/Log.h" 1796154be69fa240a662419183ed08e1cfc5418164Greg Clayton#include "lldb/Core/Stream.h" 1896154be69fa240a662419183ed08e1cfc5418164Greg Clayton 19915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 20915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatausing namespace lldb; 21915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatausing namespace lldb_private; 22915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 23a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SBData () : 24a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp(new DataExtractor()) 25915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 26915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 27915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 28915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::SBData (const lldb::DataExtractorSP& data_sp) : 29915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata m_opaque_sp (data_sp) 30915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 31915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 32915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 33915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::SBData(const SBData &rhs) : 34915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata m_opaque_sp (rhs.m_opaque_sp) 35915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 36915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 37915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 38915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataconst SBData & 39915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::operator = (const SBData &rhs) 40915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 41915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (this != &rhs) 42915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata m_opaque_sp = rhs.m_opaque_sp; 43915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return *this; 44915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 45915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 46915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::~SBData () 47915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 48915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 49915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 50915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatavoid 51915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::SetOpaque (const lldb::DataExtractorSP &data_sp) 52915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 53915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata m_opaque_sp = data_sp; 54915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 55915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 56915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatalldb_private::DataExtractor * 57915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::get() const 58915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 59915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return m_opaque_sp.get(); 60915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 61915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 62915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatalldb_private::DataExtractor * 63915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::operator->() const 64915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 65915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return m_opaque_sp.operator->(); 66915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 67915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 68915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatalldb::DataExtractorSP & 69915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::operator*() 70915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 71915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return m_opaque_sp; 72915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 73915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 74915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataconst lldb::DataExtractorSP & 75915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::operator*() const 76915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 77915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return m_opaque_sp; 78915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 79915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 80915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatabool 81915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::IsValid() 82915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 83915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return m_opaque_sp.get() != NULL; 84915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 85915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 86915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatauint8_t 87915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::GetAddressByteSize () 88915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 89952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 90915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint8_t value = 0; 91915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (m_opaque_sp.get()) 92915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetAddressByteSize(); 93915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 94915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata log->Printf ("SBData::GetAddressByteSize () => " 95915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%i)", value); 96915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 97915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 98915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 99915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatavoid 100a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetAddressByteSize (uint8_t addr_byte_size) 101a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 102952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 103a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (m_opaque_sp.get()) 104a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp->SetAddressByteSize(addr_byte_size); 105a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 106a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetAddressByteSize (%i)", addr_byte_size); 107a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 108a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 109a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonvoid 110915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::Clear () 111915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 112915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (m_opaque_sp.get()) 113915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata m_opaque_sp->Clear(); 114915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 115915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 116915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatasize_t 117915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::GetByteSize () 118915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 119952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 120915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata size_t value = 0; 121915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (m_opaque_sp.get()) 122915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetByteSize(); 123915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 124915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata log->Printf ("SBData::GetByteSize () => " 1257e5fa7fc1f8efd24c078e063b2c4b5e13ba5be20Jason Molenda "(%lu)", value); 126915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 127915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 128915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 129915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatalldb::ByteOrder 130915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::GetByteOrder () 131915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 132952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 133915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata lldb::ByteOrder value = eByteOrderInvalid; 134915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (m_opaque_sp.get()) 135915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetByteOrder(); 136915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 137915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata log->Printf ("SBData::GetByteOrder () => " 138915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%i)", value); 139915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 140915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 141915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 142a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonvoid 143a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetByteOrder (lldb::ByteOrder endian) 144a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 145952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 146a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (m_opaque_sp.get()) 147a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp->SetByteOrder(endian); 148a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 149a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::GetByteOrder (%i)", endian); 150a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 151a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 152a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 153915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatafloat 15436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetFloat (lldb::SBError& error, lldb::offset_t offset) 155915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 156952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 157915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata float value = 0; 158915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 159915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 160915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 161915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 162915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 163915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 164915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 165915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetFloat(&offset); 166915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 167915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 168915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 169915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 17036da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetFloat (error=%p,offset=%" PRIu64 ") => " 171915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%f)", error.get(), offset, value); 172915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 173915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 174915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 175915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatadouble 17636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetDouble (lldb::SBError& error, lldb::offset_t offset) 177915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 178952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 179915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata double value = 0; 180915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 181915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 182915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 183915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 184915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 185915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 186915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 187915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetDouble(&offset); 188915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 189915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 190915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 191915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 19236da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetDouble (error=%p,offset=%" PRIu64 ") => " 193915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%f)", error.get(), offset, value); 194915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 195915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 196915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 197915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatalong double 19836da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetLongDouble (lldb::SBError& error, lldb::offset_t offset) 199915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 200952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 201915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata long double value = 0; 202915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 203915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 204915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 205915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 206915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 207915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 208915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 209915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetLongDouble(&offset); 210915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 211915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 212915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 213915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 21436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetLongDouble (error=%p,offset=%" PRIu64 ") => " 2157e5fa7fc1f8efd24c078e063b2c4b5e13ba5be20Jason Molenda "(%Lf)", error.get(), offset, value); 216915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 217915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 218915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 219915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatalldb::addr_t 22036da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetAddress (lldb::SBError& error, lldb::offset_t offset) 221915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 222952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 223915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata lldb::addr_t value = 0; 224915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 225915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 226915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 227915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 228915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 229915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 230915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 231915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetAddress(&offset); 232915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 233915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 234915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 235915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 23636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetAddress (error=%p,offset=%" PRIu64 ") => " 237915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%p)", error.get(), offset, (void*)value); 238915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 239915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 240915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 241915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatauint8_t 24236da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetUnsignedInt8 (lldb::SBError& error, lldb::offset_t offset) 243915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 244952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 245915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint8_t value = 0; 246915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 247915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 248915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 249915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 250915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 251915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 252915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 253915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetU8(&offset); 254915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 255915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 256915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 257915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 25836da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetUnsignedInt8 (error=%p,offset=%" PRIu64 ") => " 259915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%c)", error.get(), offset, value); 260915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 261915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 262915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 263915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatauint16_t 26436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetUnsignedInt16 (lldb::SBError& error, lldb::offset_t offset) 265915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 266952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 267915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint16_t value = 0; 268915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 269915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 270915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 271915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 272915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 273915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 274915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 275915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetU16(&offset); 276915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 277915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 278915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 279915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 28036da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetUnsignedInt16 (error=%p,offset=%" PRIu64 ") => " 281915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%hd)", error.get(), offset, value); 282915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 283915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 284915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 285915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatauint32_t 28636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetUnsignedInt32 (lldb::SBError& error, lldb::offset_t offset) 287915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 288952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 289915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t value = 0; 290915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 291915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 292915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 293915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 294915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 295915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 296915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 297915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetU32(&offset); 298915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 299915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 300915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 301915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 30236da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetUnsignedInt32 (error=%p,offset=%" PRIu64 ") => " 303915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%d)", error.get(), offset, value); 304915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 305915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 306915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 307915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatauint64_t 30836da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetUnsignedInt64 (lldb::SBError& error, lldb::offset_t offset) 309915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 310952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 311915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint64_t value = 0; 312915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 313915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 314915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 315915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 316915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 317915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 318915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 319915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetU64(&offset); 320915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 321915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 322915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 323915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 32436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetUnsignedInt64 (error=%p,offset=%" PRIu64 ") => " 3255f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea "(%" PRId64 ")", error.get(), offset, value); 326915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 327915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 328915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 329915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataint8_t 33036da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetSignedInt8 (lldb::SBError& error, lldb::offset_t offset) 331915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 332952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 333915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata int8_t value = 0; 334915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 335915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 336915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 337915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 338915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 339915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 340915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 341915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = (int8_t)m_opaque_sp->GetMaxS64(&offset, 1); 342915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 343915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 344915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 345915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 34636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetSignedInt8 (error=%p,offset=%" PRIu64 ") => " 347915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%c)", error.get(), offset, value); 348915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 349915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 350915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 351915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataint16_t 35236da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetSignedInt16 (lldb::SBError& error, lldb::offset_t offset) 353915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 354952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 355915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata int16_t value = 0; 356915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 357915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 358915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 359915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 360915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 361915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 362915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 363915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = (int16_t)m_opaque_sp->GetMaxS64(&offset, 2); 364915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 365915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 366915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 367915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 36836da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetSignedInt16 (error=%p,offset=%" PRIu64 ") => " 369915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%hd)", error.get(), offset, value); 370915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 371915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 372915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 373915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataint32_t 37436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetSignedInt32 (lldb::SBError& error, lldb::offset_t offset) 375915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 376952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 377915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata int32_t value = 0; 378915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 379915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 380915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 381915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 382915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 383915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 384915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 385915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = (int32_t)m_opaque_sp->GetMaxS64(&offset, 4); 386915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 387915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 388915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 389915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 39036da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetSignedInt32 (error=%p,offset=%" PRIu64 ") => " 391915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%d)", error.get(), offset, value); 392915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 393915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 394915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 395915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataint64_t 39636da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetSignedInt64 (lldb::SBError& error, lldb::offset_t offset) 397915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 398952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 399915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata int64_t value = 0; 400915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 401915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 402915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 403915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 404915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 405915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 406915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 407915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = (int64_t)m_opaque_sp->GetMaxS64(&offset, 8); 408915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset) 409915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 410915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 411915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 41236da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetSignedInt64 (error=%p,offset=%" PRIu64 ") => " 4135f35a4be95aed0e5b2cb36f7d785bcbfc67284aeDaniel Malea "(%" PRId64 ")", error.get(), offset, value); 414915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 415915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 416915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 417915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataconst char* 41836da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg ClaytonSBData::GetString (lldb::SBError& error, lldb::offset_t offset) 419915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 420952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 421915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata const char* value = 0; 422915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 423915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 424915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 425915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 426915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 427915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 428915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 429915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp->GetCStr(&offset); 430915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (offset == old_offset || (value == NULL)) 431915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 432915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 433915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 43436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::GetString (error=%p,offset=%" PRIu64 ") => " 435915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%p)", error.get(), offset, value); 436915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 437915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 438915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 439915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatabool 44015ef51e3bd8229d3779f96e08b25b26182c91c6cGreg ClaytonSBData::GetDescription (lldb::SBStream &description, lldb::addr_t base_addr) 441915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 44296154be69fa240a662419183ed08e1cfc5418164Greg Clayton Stream &strm = description.ref(); 44396154be69fa240a662419183ed08e1cfc5418164Greg Clayton 444915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (m_opaque_sp) 445915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 44696154be69fa240a662419183ed08e1cfc5418164Greg Clayton m_opaque_sp->Dump (&strm, 44796154be69fa240a662419183ed08e1cfc5418164Greg Clayton 0, 44896154be69fa240a662419183ed08e1cfc5418164Greg Clayton lldb::eFormatBytesWithASCII, 44996154be69fa240a662419183ed08e1cfc5418164Greg Clayton 1, 45096154be69fa240a662419183ed08e1cfc5418164Greg Clayton m_opaque_sp->GetByteSize(), 45196154be69fa240a662419183ed08e1cfc5418164Greg Clayton 16, 45296154be69fa240a662419183ed08e1cfc5418164Greg Clayton base_addr, 45396154be69fa240a662419183ed08e1cfc5418164Greg Clayton 0, 45496154be69fa240a662419183ed08e1cfc5418164Greg Clayton 0); 455915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 456915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 45796154be69fa240a662419183ed08e1cfc5418164Greg Clayton strm.PutCString ("No value"); 458915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 459915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return true; 460915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 461915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 462915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatasize_t 463915448044bac6fdac22a33cc46697dcb771a8df2Enrico GranataSBData::ReadRawData (lldb::SBError& error, 46436da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton lldb::offset_t offset, 465915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata void *buf, 466915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata size_t size) 467915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 468952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 469915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata void* ok = NULL; 470915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 471915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 472915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("no value to read from"); 473915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 474915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 475915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata { 476915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t old_offset = offset; 477915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata ok = m_opaque_sp->GetU8(&offset, buf, size); 478915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if ((offset == old_offset) || (ok == NULL)) 479915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata error.SetErrorString("unable to read data"); 480915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata } 481915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 48236da2aa6dc5ad9994b638ed09eb81c44cc05540bGreg Clayton log->Printf ("SBData::ReadRawData (error=%p,offset=%" PRIu64 ",buf=%p,size=%lu) => " 483915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%p)", error.get(), offset, buf, size, ok); 484915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return ok ? size : 0; 485915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 486915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 487915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatavoid 488a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetData (lldb::SBError& error, 489a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton const void *buf, 490a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t size, 491a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::ByteOrder endian, 492a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton uint8_t addr_size) 493915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 494952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 495915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (!m_opaque_sp.get()) 496915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); 497915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata else 498915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata m_opaque_sp->SetData(buf, size, endian); 499915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 5007e5fa7fc1f8efd24c078e063b2c4b5e13ba5be20Jason Molenda log->Printf ("SBData::SetData (error=%p,buf=%p,size=%lu,endian=%d,addr_size=%c) => " 501915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%p)", error.get(), buf, size, endian, addr_size, m_opaque_sp.get()); 502915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} 503915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 504915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatabool 505a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::Append (const SBData& rhs) 506915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 507952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 508915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata bool value = false; 509915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (m_opaque_sp.get() && rhs.m_opaque_sp.get()) 510915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata value = m_opaque_sp.get()->Append(*rhs.m_opaque_sp); 511915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata if (log) 512915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata log->Printf ("SBData::Append (rhs=%p) => " 513915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata "(%s)", rhs.get(), value ? "true" : "false"); 514915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata return value; 515141f8d98cb74262914d66a7af4732e8cb2d8699fGreg Clayton} 516a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 517a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonlldb::SBData 518a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::CreateDataFromCString (lldb::ByteOrder endian, uint32_t addr_byte_size, const char* data) 519a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 520a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!data || !data[0]) 521a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return SBData(); 522a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 523a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton uint32_t data_len = strlen(data); 524a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 525a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 526a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 527a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 528a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton SBData ret(data_sp); 529a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 530a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return ret; 531a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 532a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 533a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonlldb::SBData 534a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::CreateDataFromUInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint64_t* array, size_t array_len) 535a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 536a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 537a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return SBData(); 538a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 539a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(uint64_t); 540a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 541a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 542a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 543a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 544a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton SBData ret(data_sp); 545a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 546a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return ret; 547a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 548a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 549a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonlldb::SBData 550a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::CreateDataFromUInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint32_t* array, size_t array_len) 551a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 552a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 553a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return SBData(); 554a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 555a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(uint32_t); 556a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 557a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 558a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 559a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 560a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton SBData ret(data_sp); 561a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 562a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return ret; 563a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 564a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 565a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonlldb::SBData 566a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::CreateDataFromSInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int64_t* array, size_t array_len) 567a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 568a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 569a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return SBData(); 570a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 571a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(int64_t); 572a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 573a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 574a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 575a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 576a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton SBData ret(data_sp); 577a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 578a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return ret; 579a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 580a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 581a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonlldb::SBData 582a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::CreateDataFromSInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int32_t* array, size_t array_len) 583a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 584a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 585a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return SBData(); 586a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 587a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(int32_t); 588a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 589a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 590a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 591a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 592a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton SBData ret(data_sp); 593a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 594a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return ret; 595a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 596a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 597a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonlldb::SBData 598a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::CreateDataFromDoubleArray (lldb::ByteOrder endian, uint32_t addr_byte_size, double* array, size_t array_len) 599a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 600a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 601a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return SBData(); 602a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 603a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(double); 604a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 605a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 606a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 607a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 608a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton SBData ret(data_sp); 609a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 610a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return ret; 611a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 612a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 613a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonbool 614a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetDataFromCString (const char* data) 615a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 616952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 617a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 618a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!data) 619a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton { 620a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 621a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromCString (data=%p) => " 622a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "false", data); 623a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return false; 624a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton } 625a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 626a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = strlen(data); 627a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 628a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 629a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 630a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!m_opaque_sp.get()) 631a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 632a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton else 633a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp->SetData(buffer_sp); 634a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 635a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 636a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromCString (data=%p) => " 637a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "true", data); 638a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 639a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return true; 640a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 641a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 642a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonbool 643a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetDataFromUInt64Array (uint64_t* array, size_t array_len) 644a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 645952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 646a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 647a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 648a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton { 649a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 650a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromUInt64Array (array=%p, array_len = %lu) => " 651a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "false", array, array_len); 652a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return false; 653a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton } 654a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 655a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(uint64_t); 656a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 657a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 658a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 659a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!m_opaque_sp.get()) 660a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 661a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton else 662a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp->SetData(buffer_sp); 663a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 664a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 665a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromUInt64Array (array=%p, array_len = %lu) => " 666a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "true", array, array_len); 667a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 668a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return true; 669a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 670a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 671a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonbool 672a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetDataFromUInt32Array (uint32_t* array, size_t array_len) 673a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 674952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 675a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 676a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 677a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton { 678a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 679a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromUInt32Array (array=%p, array_len = %lu) => " 680a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "false", array, array_len); 681a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return false; 682a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton } 683a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 684a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(uint32_t); 685a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 686a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 687a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 688a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!m_opaque_sp.get()) 689a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 690a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton else 691a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp->SetData(buffer_sp); 692a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 693a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 694a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromUInt32Array (array=%p, array_len = %lu) => " 695a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "true", array, array_len); 696a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 697a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return true; 698a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 699a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 700a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonbool 701a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetDataFromSInt64Array (int64_t* array, size_t array_len) 702a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 703952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 704a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 705a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 706a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton { 707a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 708a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromSInt64Array (array=%p, array_len = %lu) => " 709a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "false", array, array_len); 710a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return false; 711a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton } 712a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 713a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(int64_t); 714a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 715a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 716a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 717a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!m_opaque_sp.get()) 718a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 719a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton else 720a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp->SetData(buffer_sp); 721a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 722a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 723a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromSInt64Array (array=%p, array_len = %lu) => " 724a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "true", array, array_len); 725a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 726a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return true; 727a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 728a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 729a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonbool 730a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetDataFromSInt32Array (int32_t* array, size_t array_len) 731a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 732952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 733a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 734a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 735a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton { 736a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 737a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromSInt32Array (array=%p, array_len = %lu) => " 738a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "false", array, array_len); 739a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return false; 740a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton } 741a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 742a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(int32_t); 743a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 744a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 745a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 746a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!m_opaque_sp.get()) 747a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 748a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton else 749a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp->SetData(buffer_sp); 750a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 751a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 752a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromSInt32Array (array=%p, array_len = %lu) => " 753a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "true", array, array_len); 754a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 755a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return true; 756a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 757a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 758a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Claytonbool 759a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg ClaytonSBData::SetDataFromDoubleArray (double* array, size_t array_len) 760a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton{ 761952e9dc874944fcdbbb224f3ec4fc2c859376f64Greg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 762a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 763a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!array || array_len == 0) 764a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton { 765a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 766a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromDoubleArray (array=%p, array_len = %lu) => " 767a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "false", array, array_len); 768a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return false; 769a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton } 770a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 771a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton size_t data_len = array_len * sizeof(double); 772a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 773a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 774a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 775a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (!m_opaque_sp.get()) 776a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 777a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton else 778a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton m_opaque_sp->SetData(buffer_sp); 779a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 780a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton if (log) 781a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton log->Printf ("SBData::SetDataFromDoubleArray (array=%p, array_len = %lu) => " 782a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton "true", array, array_len); 783a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton 784a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton return true; 785a6b7e323caa2bbd1b2835dcce775340b27c13bf3Greg Clayton} 786