19128ee2fSEnrico Granata //===-- SBData.cpp ----------------------------------------------*- C++ -*-===//
29128ee2fSEnrico Granata //
39128ee2fSEnrico Granata //                     The LLVM Compiler Infrastructure
49128ee2fSEnrico Granata //
59128ee2fSEnrico Granata // This file is distributed under the University of Illinois Open Source
69128ee2fSEnrico Granata // License. See LICENSE.TXT for details.
79128ee2fSEnrico Granata //
89128ee2fSEnrico Granata //===----------------------------------------------------------------------===//
99128ee2fSEnrico Granata 
10af90cf52SSean Callanan #include <inttypes.h> // PRIu64
11af90cf52SSean Callanan 
129128ee2fSEnrico Granata #include "lldb/API/SBData.h"
139128ee2fSEnrico Granata #include "lldb/API/SBError.h"
149128ee2fSEnrico Granata #include "lldb/API/SBStream.h"
159128ee2fSEnrico Granata 
160f28986aSGreg Clayton #include "lldb/Core/DataBufferHeap.h"
179128ee2fSEnrico Granata #include "lldb/Core/DataExtractor.h"
18*6f9e6901SZachary Turner #include "lldb/Utility/Log.h"
19bf9a7730SZachary Turner #include "lldb/Utility/Stream.h"
20da7bc7d0SGreg Clayton 
219128ee2fSEnrico Granata using namespace lldb;
229128ee2fSEnrico Granata using namespace lldb_private;
239128ee2fSEnrico Granata 
24b9c1b51eSKate Stone SBData::SBData() : m_opaque_sp(new DataExtractor()) {}
259128ee2fSEnrico Granata 
26b9c1b51eSKate Stone SBData::SBData(const lldb::DataExtractorSP &data_sp) : m_opaque_sp(data_sp) {}
279128ee2fSEnrico Granata 
28b9c1b51eSKate Stone SBData::SBData(const SBData &rhs) : m_opaque_sp(rhs.m_opaque_sp) {}
299128ee2fSEnrico Granata 
30b9c1b51eSKate Stone const SBData &SBData::operator=(const SBData &rhs) {
319128ee2fSEnrico Granata   if (this != &rhs)
329128ee2fSEnrico Granata     m_opaque_sp = rhs.m_opaque_sp;
339128ee2fSEnrico Granata   return *this;
349128ee2fSEnrico Granata }
359128ee2fSEnrico Granata 
36b9c1b51eSKate Stone SBData::~SBData() {}
379128ee2fSEnrico Granata 
38b9c1b51eSKate Stone void SBData::SetOpaque(const lldb::DataExtractorSP &data_sp) {
399128ee2fSEnrico Granata   m_opaque_sp = data_sp;
409128ee2fSEnrico Granata }
419128ee2fSEnrico Granata 
42b9c1b51eSKate Stone lldb_private::DataExtractor *SBData::get() const { return m_opaque_sp.get(); }
439128ee2fSEnrico Granata 
44b9c1b51eSKate Stone lldb_private::DataExtractor *SBData::operator->() const {
459128ee2fSEnrico Granata   return m_opaque_sp.operator->();
469128ee2fSEnrico Granata }
479128ee2fSEnrico Granata 
48b9c1b51eSKate Stone lldb::DataExtractorSP &SBData::operator*() { return m_opaque_sp; }
499128ee2fSEnrico Granata 
50b9c1b51eSKate Stone const lldb::DataExtractorSP &SBData::operator*() const { return m_opaque_sp; }
519128ee2fSEnrico Granata 
52b9c1b51eSKate Stone bool SBData::IsValid() { return m_opaque_sp.get() != NULL; }
539128ee2fSEnrico Granata 
54b9c1b51eSKate Stone uint8_t SBData::GetAddressByteSize() {
555160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
569128ee2fSEnrico Granata   uint8_t value = 0;
579128ee2fSEnrico Granata   if (m_opaque_sp.get())
589128ee2fSEnrico Granata     value = m_opaque_sp->GetAddressByteSize();
599128ee2fSEnrico Granata   if (log)
609128ee2fSEnrico Granata     log->Printf("SBData::GetAddressByteSize () => "
61b9c1b51eSKate Stone                 "(%i)",
62b9c1b51eSKate Stone                 value);
639128ee2fSEnrico Granata   return value;
649128ee2fSEnrico Granata }
659128ee2fSEnrico Granata 
66b9c1b51eSKate Stone void SBData::SetAddressByteSize(uint8_t addr_byte_size) {
675160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
680f28986aSGreg Clayton   if (m_opaque_sp.get())
690f28986aSGreg Clayton     m_opaque_sp->SetAddressByteSize(addr_byte_size);
700f28986aSGreg Clayton   if (log)
710f28986aSGreg Clayton     log->Printf("SBData::SetAddressByteSize (%i)", addr_byte_size);
720f28986aSGreg Clayton }
730f28986aSGreg Clayton 
74b9c1b51eSKate Stone void SBData::Clear() {
759128ee2fSEnrico Granata   if (m_opaque_sp.get())
769128ee2fSEnrico Granata     m_opaque_sp->Clear();
779128ee2fSEnrico Granata }
789128ee2fSEnrico Granata 
79b9c1b51eSKate Stone size_t SBData::GetByteSize() {
805160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
819128ee2fSEnrico Granata   size_t value = 0;
829128ee2fSEnrico Granata   if (m_opaque_sp.get())
839128ee2fSEnrico Granata     value = m_opaque_sp->GetByteSize();
849128ee2fSEnrico Granata   if (log)
859128ee2fSEnrico Granata     log->Printf("SBData::GetByteSize () => "
86b9c1b51eSKate Stone                 "( %" PRIu64 " )",
87b9c1b51eSKate Stone                 (uint64_t)value);
889128ee2fSEnrico Granata   return value;
899128ee2fSEnrico Granata }
909128ee2fSEnrico Granata 
91b9c1b51eSKate Stone lldb::ByteOrder SBData::GetByteOrder() {
925160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
939128ee2fSEnrico Granata   lldb::ByteOrder value = eByteOrderInvalid;
949128ee2fSEnrico Granata   if (m_opaque_sp.get())
959128ee2fSEnrico Granata     value = m_opaque_sp->GetByteOrder();
969128ee2fSEnrico Granata   if (log)
979128ee2fSEnrico Granata     log->Printf("SBData::GetByteOrder () => "
98b9c1b51eSKate Stone                 "(%i)",
99b9c1b51eSKate Stone                 value);
1009128ee2fSEnrico Granata   return value;
1019128ee2fSEnrico Granata }
1029128ee2fSEnrico Granata 
103b9c1b51eSKate Stone void SBData::SetByteOrder(lldb::ByteOrder endian) {
1045160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
1050f28986aSGreg Clayton   if (m_opaque_sp.get())
1060f28986aSGreg Clayton     m_opaque_sp->SetByteOrder(endian);
1070f28986aSGreg Clayton   if (log)
1080f28986aSGreg Clayton     log->Printf("SBData::GetByteOrder (%i)", endian);
1090f28986aSGreg Clayton }
1100f28986aSGreg Clayton 
111b9c1b51eSKate Stone float SBData::GetFloat(lldb::SBError &error, lldb::offset_t offset) {
1125160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
1139128ee2fSEnrico Granata   float value = 0;
114b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
1159128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
116b9c1b51eSKate Stone   } else {
1179128ee2fSEnrico Granata     uint32_t old_offset = offset;
1189128ee2fSEnrico Granata     value = m_opaque_sp->GetFloat(&offset);
1199128ee2fSEnrico Granata     if (offset == old_offset)
1209128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
1219128ee2fSEnrico Granata   }
1229128ee2fSEnrico Granata   if (log)
123324a1036SSaleem Abdulrasool     log->Printf("SBData::GetFloat (error=%p,offset=%" PRIu64 ") => (%f)",
124324a1036SSaleem Abdulrasool                 static_cast<void *>(error.get()), offset, value);
1259128ee2fSEnrico Granata   return value;
1269128ee2fSEnrico Granata }
1279128ee2fSEnrico Granata 
128b9c1b51eSKate Stone double SBData::GetDouble(lldb::SBError &error, lldb::offset_t offset) {
1295160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
1309128ee2fSEnrico Granata   double value = 0;
131b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
1329128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
133b9c1b51eSKate Stone   } else {
1349128ee2fSEnrico Granata     uint32_t old_offset = offset;
1359128ee2fSEnrico Granata     value = m_opaque_sp->GetDouble(&offset);
1369128ee2fSEnrico Granata     if (offset == old_offset)
1379128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
1389128ee2fSEnrico Granata   }
1399128ee2fSEnrico Granata   if (log)
140c7bece56SGreg Clayton     log->Printf("SBData::GetDouble (error=%p,offset=%" PRIu64 ") => "
141b9c1b51eSKate Stone                 "(%f)",
142b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
1439128ee2fSEnrico Granata   return value;
1449128ee2fSEnrico Granata }
1459128ee2fSEnrico Granata 
146b9c1b51eSKate Stone long double SBData::GetLongDouble(lldb::SBError &error, lldb::offset_t offset) {
1475160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
1489128ee2fSEnrico Granata   long double value = 0;
149b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
1509128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
151b9c1b51eSKate Stone   } else {
1529128ee2fSEnrico Granata     uint32_t old_offset = offset;
1539128ee2fSEnrico Granata     value = m_opaque_sp->GetLongDouble(&offset);
1549128ee2fSEnrico Granata     if (offset == old_offset)
1559128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
1569128ee2fSEnrico Granata   }
1579128ee2fSEnrico Granata   if (log)
158c7bece56SGreg Clayton     log->Printf("SBData::GetLongDouble (error=%p,offset=%" PRIu64 ") => "
159b9c1b51eSKate Stone                 "(%Lf)",
160b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
1619128ee2fSEnrico Granata   return value;
1629128ee2fSEnrico Granata }
1639128ee2fSEnrico Granata 
164b9c1b51eSKate Stone lldb::addr_t SBData::GetAddress(lldb::SBError &error, lldb::offset_t offset) {
1655160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
1669128ee2fSEnrico Granata   lldb::addr_t value = 0;
167b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
1689128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
169b9c1b51eSKate Stone   } else {
1709128ee2fSEnrico Granata     uint32_t old_offset = offset;
1719128ee2fSEnrico Granata     value = m_opaque_sp->GetAddress(&offset);
1729128ee2fSEnrico Granata     if (offset == old_offset)
1739128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
1749128ee2fSEnrico Granata   }
1759128ee2fSEnrico Granata   if (log)
176c7bece56SGreg Clayton     log->Printf("SBData::GetAddress (error=%p,offset=%" PRIu64 ") => "
177b9c1b51eSKate Stone                 "(%p)",
178b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset,
179324a1036SSaleem Abdulrasool                 reinterpret_cast<void *>(value));
1809128ee2fSEnrico Granata   return value;
1819128ee2fSEnrico Granata }
1829128ee2fSEnrico Granata 
183b9c1b51eSKate Stone uint8_t SBData::GetUnsignedInt8(lldb::SBError &error, lldb::offset_t offset) {
1845160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
1859128ee2fSEnrico Granata   uint8_t value = 0;
186b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
1879128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
188b9c1b51eSKate Stone   } else {
1899128ee2fSEnrico Granata     uint32_t old_offset = offset;
1909128ee2fSEnrico Granata     value = m_opaque_sp->GetU8(&offset);
1919128ee2fSEnrico Granata     if (offset == old_offset)
1929128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
1939128ee2fSEnrico Granata   }
1949128ee2fSEnrico Granata   if (log)
195c7bece56SGreg Clayton     log->Printf("SBData::GetUnsignedInt8 (error=%p,offset=%" PRIu64 ") => "
196b9c1b51eSKate Stone                 "(%c)",
197b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
1989128ee2fSEnrico Granata   return value;
1999128ee2fSEnrico Granata }
2009128ee2fSEnrico Granata 
201b9c1b51eSKate Stone uint16_t SBData::GetUnsignedInt16(lldb::SBError &error, lldb::offset_t offset) {
2025160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
2039128ee2fSEnrico Granata   uint16_t value = 0;
204b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
2059128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
206b9c1b51eSKate Stone   } else {
2079128ee2fSEnrico Granata     uint32_t old_offset = offset;
2089128ee2fSEnrico Granata     value = m_opaque_sp->GetU16(&offset);
2099128ee2fSEnrico Granata     if (offset == old_offset)
2109128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
2119128ee2fSEnrico Granata   }
2129128ee2fSEnrico Granata   if (log)
213c7bece56SGreg Clayton     log->Printf("SBData::GetUnsignedInt16 (error=%p,offset=%" PRIu64 ") => "
214b9c1b51eSKate Stone                 "(%hd)",
215b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
2169128ee2fSEnrico Granata   return value;
2179128ee2fSEnrico Granata }
2189128ee2fSEnrico Granata 
219b9c1b51eSKate Stone uint32_t SBData::GetUnsignedInt32(lldb::SBError &error, lldb::offset_t offset) {
2205160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
2219128ee2fSEnrico Granata   uint32_t value = 0;
222b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
2239128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
224b9c1b51eSKate Stone   } else {
2259128ee2fSEnrico Granata     uint32_t old_offset = offset;
2269128ee2fSEnrico Granata     value = m_opaque_sp->GetU32(&offset);
2279128ee2fSEnrico Granata     if (offset == old_offset)
2289128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
2299128ee2fSEnrico Granata   }
2309128ee2fSEnrico Granata   if (log)
231c7bece56SGreg Clayton     log->Printf("SBData::GetUnsignedInt32 (error=%p,offset=%" PRIu64 ") => "
232b9c1b51eSKate Stone                 "(%d)",
233b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
2349128ee2fSEnrico Granata   return value;
2359128ee2fSEnrico Granata }
2369128ee2fSEnrico Granata 
237b9c1b51eSKate Stone uint64_t SBData::GetUnsignedInt64(lldb::SBError &error, lldb::offset_t offset) {
2385160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
2399128ee2fSEnrico Granata   uint64_t value = 0;
240b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
2419128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
242b9c1b51eSKate Stone   } else {
2439128ee2fSEnrico Granata     uint32_t old_offset = offset;
2449128ee2fSEnrico Granata     value = m_opaque_sp->GetU64(&offset);
2459128ee2fSEnrico Granata     if (offset == old_offset)
2469128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
2479128ee2fSEnrico Granata   }
2489128ee2fSEnrico Granata   if (log)
249c7bece56SGreg Clayton     log->Printf("SBData::GetUnsignedInt64 (error=%p,offset=%" PRIu64 ") => "
250b9c1b51eSKate Stone                 "(%" PRId64 ")",
251b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
2529128ee2fSEnrico Granata   return value;
2539128ee2fSEnrico Granata }
2549128ee2fSEnrico Granata 
255b9c1b51eSKate Stone int8_t SBData::GetSignedInt8(lldb::SBError &error, lldb::offset_t offset) {
2565160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
2579128ee2fSEnrico Granata   int8_t value = 0;
258b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
2599128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
260b9c1b51eSKate Stone   } else {
2619128ee2fSEnrico Granata     uint32_t old_offset = offset;
2629128ee2fSEnrico Granata     value = (int8_t)m_opaque_sp->GetMaxS64(&offset, 1);
2639128ee2fSEnrico Granata     if (offset == old_offset)
2649128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
2659128ee2fSEnrico Granata   }
2669128ee2fSEnrico Granata   if (log)
267c7bece56SGreg Clayton     log->Printf("SBData::GetSignedInt8 (error=%p,offset=%" PRIu64 ") => "
268b9c1b51eSKate Stone                 "(%c)",
269b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
2709128ee2fSEnrico Granata   return value;
2719128ee2fSEnrico Granata }
2729128ee2fSEnrico Granata 
273b9c1b51eSKate Stone int16_t SBData::GetSignedInt16(lldb::SBError &error, lldb::offset_t offset) {
2745160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
2759128ee2fSEnrico Granata   int16_t value = 0;
276b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
2779128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
278b9c1b51eSKate Stone   } else {
2799128ee2fSEnrico Granata     uint32_t old_offset = offset;
2809128ee2fSEnrico Granata     value = (int16_t)m_opaque_sp->GetMaxS64(&offset, 2);
2819128ee2fSEnrico Granata     if (offset == old_offset)
2829128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
2839128ee2fSEnrico Granata   }
2849128ee2fSEnrico Granata   if (log)
285c7bece56SGreg Clayton     log->Printf("SBData::GetSignedInt16 (error=%p,offset=%" PRIu64 ") => "
286b9c1b51eSKate Stone                 "(%hd)",
287b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
2889128ee2fSEnrico Granata   return value;
2899128ee2fSEnrico Granata }
2909128ee2fSEnrico Granata 
291b9c1b51eSKate Stone int32_t SBData::GetSignedInt32(lldb::SBError &error, lldb::offset_t offset) {
2925160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
2939128ee2fSEnrico Granata   int32_t value = 0;
294b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
2959128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
296b9c1b51eSKate Stone   } else {
2979128ee2fSEnrico Granata     uint32_t old_offset = offset;
2989128ee2fSEnrico Granata     value = (int32_t)m_opaque_sp->GetMaxS64(&offset, 4);
2999128ee2fSEnrico Granata     if (offset == old_offset)
3009128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
3019128ee2fSEnrico Granata   }
3029128ee2fSEnrico Granata   if (log)
303c7bece56SGreg Clayton     log->Printf("SBData::GetSignedInt32 (error=%p,offset=%" PRIu64 ") => "
304b9c1b51eSKate Stone                 "(%d)",
305b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
3069128ee2fSEnrico Granata   return value;
3079128ee2fSEnrico Granata }
3089128ee2fSEnrico Granata 
309b9c1b51eSKate Stone int64_t SBData::GetSignedInt64(lldb::SBError &error, lldb::offset_t offset) {
3105160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
3119128ee2fSEnrico Granata   int64_t value = 0;
312b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
3139128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
314b9c1b51eSKate Stone   } else {
3159128ee2fSEnrico Granata     uint32_t old_offset = offset;
3169128ee2fSEnrico Granata     value = (int64_t)m_opaque_sp->GetMaxS64(&offset, 8);
3179128ee2fSEnrico Granata     if (offset == old_offset)
3189128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
3199128ee2fSEnrico Granata   }
3209128ee2fSEnrico Granata   if (log)
321c7bece56SGreg Clayton     log->Printf("SBData::GetSignedInt64 (error=%p,offset=%" PRIu64 ") => "
322b9c1b51eSKate Stone                 "(%" PRId64 ")",
323b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset, value);
3249128ee2fSEnrico Granata   return value;
3259128ee2fSEnrico Granata }
3269128ee2fSEnrico Granata 
327b9c1b51eSKate Stone const char *SBData::GetString(lldb::SBError &error, lldb::offset_t offset) {
3285160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
3299128ee2fSEnrico Granata   const char *value = 0;
330b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
3319128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
332b9c1b51eSKate Stone   } else {
3339128ee2fSEnrico Granata     uint32_t old_offset = offset;
3349128ee2fSEnrico Granata     value = m_opaque_sp->GetCStr(&offset);
3359128ee2fSEnrico Granata     if (offset == old_offset || (value == NULL))
3369128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
3379128ee2fSEnrico Granata   }
3389128ee2fSEnrico Granata   if (log)
339324a1036SSaleem Abdulrasool     log->Printf("SBData::GetString (error=%p,offset=%" PRIu64 ") => (%p)",
340324a1036SSaleem Abdulrasool                 static_cast<void *>(error.get()), offset,
341324a1036SSaleem Abdulrasool                 static_cast<const void *>(value));
3429128ee2fSEnrico Granata   return value;
3439128ee2fSEnrico Granata }
3449128ee2fSEnrico Granata 
345b9c1b51eSKate Stone bool SBData::GetDescription(lldb::SBStream &description,
346b9c1b51eSKate Stone                             lldb::addr_t base_addr) {
347da7bc7d0SGreg Clayton   Stream &strm = description.ref();
348da7bc7d0SGreg Clayton 
349b9c1b51eSKate Stone   if (m_opaque_sp) {
350b9c1b51eSKate Stone     m_opaque_sp->Dump(&strm, 0, lldb::eFormatBytesWithASCII, 1,
351b9c1b51eSKate Stone                       m_opaque_sp->GetByteSize(), 16, base_addr, 0, 0);
352b9c1b51eSKate Stone   } else
353da7bc7d0SGreg Clayton     strm.PutCString("No value");
3549128ee2fSEnrico Granata 
3559128ee2fSEnrico Granata   return true;
3569128ee2fSEnrico Granata }
3579128ee2fSEnrico Granata 
358b9c1b51eSKate Stone size_t SBData::ReadRawData(lldb::SBError &error, lldb::offset_t offset,
359b9c1b51eSKate Stone                            void *buf, size_t size) {
3605160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
3619128ee2fSEnrico Granata   void *ok = NULL;
362b9c1b51eSKate Stone   if (!m_opaque_sp.get()) {
3639128ee2fSEnrico Granata     error.SetErrorString("no value to read from");
364b9c1b51eSKate Stone   } else {
3659128ee2fSEnrico Granata     uint32_t old_offset = offset;
3669128ee2fSEnrico Granata     ok = m_opaque_sp->GetU8(&offset, buf, size);
3679128ee2fSEnrico Granata     if ((offset == old_offset) || (ok == NULL))
3689128ee2fSEnrico Granata       error.SetErrorString("unable to read data");
3699128ee2fSEnrico Granata   }
3709128ee2fSEnrico Granata   if (log)
371b9c1b51eSKate Stone     log->Printf("SBData::ReadRawData (error=%p,offset=%" PRIu64
372b9c1b51eSKate Stone                 ",buf=%p,size=%" PRIu64 ") => "
373b9c1b51eSKate Stone                 "(%p)",
374b9c1b51eSKate Stone                 static_cast<void *>(error.get()), offset,
375324a1036SSaleem Abdulrasool                 static_cast<void *>(buf), static_cast<uint64_t>(size),
376324a1036SSaleem Abdulrasool                 static_cast<void *>(ok));
3779128ee2fSEnrico Granata   return ok ? size : 0;
3789128ee2fSEnrico Granata }
3799128ee2fSEnrico Granata 
380b9c1b51eSKate Stone void SBData::SetData(lldb::SBError &error, const void *buf, size_t size,
381b9c1b51eSKate Stone                      lldb::ByteOrder endian, uint8_t addr_size) {
3825160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
3839128ee2fSEnrico Granata   if (!m_opaque_sp.get())
3849128ee2fSEnrico Granata     m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size));
3859128ee2fSEnrico Granata   else
386896b4513SGreg Clayton   {
3879128ee2fSEnrico Granata     m_opaque_sp->SetData(buf, size, endian);
388896b4513SGreg Clayton     m_opaque_sp->SetAddressByteSize(addr_size);
389896b4513SGreg Clayton   }
390896b4513SGreg Clayton 
3919128ee2fSEnrico Granata   if (log)
392b9c1b51eSKate Stone     log->Printf("SBData::SetData (error=%p,buf=%p,size=%" PRIu64
393b9c1b51eSKate Stone                 ",endian=%d,addr_size=%c) => "
394b9c1b51eSKate Stone                 "(%p)",
395b9c1b51eSKate Stone                 static_cast<void *>(error.get()),
396324a1036SSaleem Abdulrasool                 static_cast<const void *>(buf), static_cast<uint64_t>(size),
397324a1036SSaleem Abdulrasool                 endian, addr_size, static_cast<void *>(m_opaque_sp.get()));
3989128ee2fSEnrico Granata }
3999128ee2fSEnrico Granata 
400b9c1b51eSKate Stone bool SBData::Append(const SBData &rhs) {
4015160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
4029128ee2fSEnrico Granata   bool value = false;
4039128ee2fSEnrico Granata   if (m_opaque_sp.get() && rhs.m_opaque_sp.get())
4049128ee2fSEnrico Granata     value = m_opaque_sp.get()->Append(*rhs.m_opaque_sp);
4059128ee2fSEnrico Granata   if (log)
406324a1036SSaleem Abdulrasool     log->Printf("SBData::Append (rhs=%p) => (%s)",
407324a1036SSaleem Abdulrasool                 static_cast<void *>(rhs.get()), value ? "true" : "false");
4089128ee2fSEnrico Granata   return value;
4099128ee2fSEnrico Granata }
4100f28986aSGreg Clayton 
411b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromCString(lldb::ByteOrder endian,
412b9c1b51eSKate Stone                                            uint32_t addr_byte_size,
413b9c1b51eSKate Stone                                            const char *data) {
4140f28986aSGreg Clayton   if (!data || !data[0])
4150f28986aSGreg Clayton     return SBData();
4160f28986aSGreg Clayton 
4170f28986aSGreg Clayton   uint32_t data_len = strlen(data);
4180f28986aSGreg Clayton 
4190f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len));
420b9c1b51eSKate Stone   lldb::DataExtractorSP data_sp(
421b9c1b51eSKate Stone       new DataExtractor(buffer_sp, endian, addr_byte_size));
4220f28986aSGreg Clayton 
4230f28986aSGreg Clayton   SBData ret(data_sp);
4240f28986aSGreg Clayton 
4250f28986aSGreg Clayton   return ret;
4260f28986aSGreg Clayton }
4270f28986aSGreg Clayton 
428b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromUInt64Array(lldb::ByteOrder endian,
429b9c1b51eSKate Stone                                                uint32_t addr_byte_size,
430b9c1b51eSKate Stone                                                uint64_t *array,
431b9c1b51eSKate Stone                                                size_t array_len) {
4320f28986aSGreg Clayton   if (!array || array_len == 0)
4330f28986aSGreg Clayton     return SBData();
4340f28986aSGreg Clayton 
4350f28986aSGreg Clayton   size_t data_len = array_len * sizeof(uint64_t);
4360f28986aSGreg Clayton 
4370f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
438b9c1b51eSKate Stone   lldb::DataExtractorSP data_sp(
439b9c1b51eSKate Stone       new DataExtractor(buffer_sp, endian, addr_byte_size));
4400f28986aSGreg Clayton 
4410f28986aSGreg Clayton   SBData ret(data_sp);
4420f28986aSGreg Clayton 
4430f28986aSGreg Clayton   return ret;
4440f28986aSGreg Clayton }
4450f28986aSGreg Clayton 
446b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromUInt32Array(lldb::ByteOrder endian,
447b9c1b51eSKate Stone                                                uint32_t addr_byte_size,
448b9c1b51eSKate Stone                                                uint32_t *array,
449b9c1b51eSKate Stone                                                size_t array_len) {
4500f28986aSGreg Clayton   if (!array || array_len == 0)
4510f28986aSGreg Clayton     return SBData();
4520f28986aSGreg Clayton 
4530f28986aSGreg Clayton   size_t data_len = array_len * sizeof(uint32_t);
4540f28986aSGreg Clayton 
4550f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
456b9c1b51eSKate Stone   lldb::DataExtractorSP data_sp(
457b9c1b51eSKate Stone       new DataExtractor(buffer_sp, endian, addr_byte_size));
4580f28986aSGreg Clayton 
4590f28986aSGreg Clayton   SBData ret(data_sp);
4600f28986aSGreg Clayton 
4610f28986aSGreg Clayton   return ret;
4620f28986aSGreg Clayton }
4630f28986aSGreg Clayton 
464b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromSInt64Array(lldb::ByteOrder endian,
465b9c1b51eSKate Stone                                                uint32_t addr_byte_size,
466b9c1b51eSKate Stone                                                int64_t *array,
467b9c1b51eSKate Stone                                                size_t array_len) {
4680f28986aSGreg Clayton   if (!array || array_len == 0)
4690f28986aSGreg Clayton     return SBData();
4700f28986aSGreg Clayton 
4710f28986aSGreg Clayton   size_t data_len = array_len * sizeof(int64_t);
4720f28986aSGreg Clayton 
4730f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
474b9c1b51eSKate Stone   lldb::DataExtractorSP data_sp(
475b9c1b51eSKate Stone       new DataExtractor(buffer_sp, endian, addr_byte_size));
4760f28986aSGreg Clayton 
4770f28986aSGreg Clayton   SBData ret(data_sp);
4780f28986aSGreg Clayton 
4790f28986aSGreg Clayton   return ret;
4800f28986aSGreg Clayton }
4810f28986aSGreg Clayton 
482b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromSInt32Array(lldb::ByteOrder endian,
483b9c1b51eSKate Stone                                                uint32_t addr_byte_size,
484b9c1b51eSKate Stone                                                int32_t *array,
485b9c1b51eSKate Stone                                                size_t array_len) {
4860f28986aSGreg Clayton   if (!array || array_len == 0)
4870f28986aSGreg Clayton     return SBData();
4880f28986aSGreg Clayton 
4890f28986aSGreg Clayton   size_t data_len = array_len * sizeof(int32_t);
4900f28986aSGreg Clayton 
4910f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
492b9c1b51eSKate Stone   lldb::DataExtractorSP data_sp(
493b9c1b51eSKate Stone       new DataExtractor(buffer_sp, endian, addr_byte_size));
4940f28986aSGreg Clayton 
4950f28986aSGreg Clayton   SBData ret(data_sp);
4960f28986aSGreg Clayton 
4970f28986aSGreg Clayton   return ret;
4980f28986aSGreg Clayton }
4990f28986aSGreg Clayton 
500b9c1b51eSKate Stone lldb::SBData SBData::CreateDataFromDoubleArray(lldb::ByteOrder endian,
501b9c1b51eSKate Stone                                                uint32_t addr_byte_size,
502b9c1b51eSKate Stone                                                double *array,
503b9c1b51eSKate Stone                                                size_t array_len) {
5040f28986aSGreg Clayton   if (!array || array_len == 0)
5050f28986aSGreg Clayton     return SBData();
5060f28986aSGreg Clayton 
5070f28986aSGreg Clayton   size_t data_len = array_len * sizeof(double);
5080f28986aSGreg Clayton 
5090f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
510b9c1b51eSKate Stone   lldb::DataExtractorSP data_sp(
511b9c1b51eSKate Stone       new DataExtractor(buffer_sp, endian, addr_byte_size));
5120f28986aSGreg Clayton 
5130f28986aSGreg Clayton   SBData ret(data_sp);
5140f28986aSGreg Clayton 
5150f28986aSGreg Clayton   return ret;
5160f28986aSGreg Clayton }
5170f28986aSGreg Clayton 
518b9c1b51eSKate Stone bool SBData::SetDataFromCString(const char *data) {
5195160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
5200f28986aSGreg Clayton 
521b9c1b51eSKate Stone   if (!data) {
5220f28986aSGreg Clayton     if (log)
523324a1036SSaleem Abdulrasool       log->Printf("SBData::SetDataFromCString (data=%p) => false",
524324a1036SSaleem Abdulrasool                   static_cast<const void *>(data));
5250f28986aSGreg Clayton     return false;
5260f28986aSGreg Clayton   }
5270f28986aSGreg Clayton 
5280f28986aSGreg Clayton   size_t data_len = strlen(data);
5290f28986aSGreg Clayton 
5300f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len));
5310f28986aSGreg Clayton 
5320f28986aSGreg Clayton   if (!m_opaque_sp.get())
533b9c1b51eSKate Stone     m_opaque_sp.reset(
534b9c1b51eSKate Stone         new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize()));
5350f28986aSGreg Clayton   else
5360f28986aSGreg Clayton     m_opaque_sp->SetData(buffer_sp);
5370f28986aSGreg Clayton 
5380f28986aSGreg Clayton   if (log)
539324a1036SSaleem Abdulrasool     log->Printf("SBData::SetDataFromCString (data=%p) => true",
540324a1036SSaleem Abdulrasool                 static_cast<const void *>(data));
5410f28986aSGreg Clayton 
5420f28986aSGreg Clayton   return true;
5430f28986aSGreg Clayton }
5440f28986aSGreg Clayton 
545b9c1b51eSKate Stone bool SBData::SetDataFromUInt64Array(uint64_t *array, size_t array_len) {
5465160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
5470f28986aSGreg Clayton 
548b9c1b51eSKate Stone   if (!array || array_len == 0) {
5490f28986aSGreg Clayton     if (log)
550b9c1b51eSKate Stone       log->Printf(
551b9c1b51eSKate Stone           "SBData::SetDataFromUInt64Array (array=%p, array_len = %" PRIu64
552b9c1b51eSKate Stone           ") => "
553b9c1b51eSKate Stone           "false",
554b9c1b51eSKate Stone           static_cast<void *>(array), static_cast<uint64_t>(array_len));
5550f28986aSGreg Clayton     return false;
5560f28986aSGreg Clayton   }
5570f28986aSGreg Clayton 
5580f28986aSGreg Clayton   size_t data_len = array_len * sizeof(uint64_t);
5590f28986aSGreg Clayton 
5600f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
5610f28986aSGreg Clayton 
5620f28986aSGreg Clayton   if (!m_opaque_sp.get())
563b9c1b51eSKate Stone     m_opaque_sp.reset(
564b9c1b51eSKate Stone         new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize()));
5650f28986aSGreg Clayton   else
5660f28986aSGreg Clayton     m_opaque_sp->SetData(buffer_sp);
5670f28986aSGreg Clayton 
5680f28986aSGreg Clayton   if (log)
569b9c1b51eSKate Stone     log->Printf("SBData::SetDataFromUInt64Array (array=%p, array_len = %" PRIu64
570b9c1b51eSKate Stone                 ") => "
571b9c1b51eSKate Stone                 "true",
572b9c1b51eSKate Stone                 static_cast<void *>(array), static_cast<uint64_t>(array_len));
5730f28986aSGreg Clayton 
5740f28986aSGreg Clayton   return true;
5750f28986aSGreg Clayton }
5760f28986aSGreg Clayton 
577b9c1b51eSKate Stone bool SBData::SetDataFromUInt32Array(uint32_t *array, size_t array_len) {
5785160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
5790f28986aSGreg Clayton 
580b9c1b51eSKate Stone   if (!array || array_len == 0) {
5810f28986aSGreg Clayton     if (log)
582b9c1b51eSKate Stone       log->Printf(
583b9c1b51eSKate Stone           "SBData::SetDataFromUInt32Array (array=%p, array_len = %" PRIu64
584b9c1b51eSKate Stone           ") => "
585b9c1b51eSKate Stone           "false",
586b9c1b51eSKate Stone           static_cast<void *>(array), static_cast<uint64_t>(array_len));
5870f28986aSGreg Clayton     return false;
5880f28986aSGreg Clayton   }
5890f28986aSGreg Clayton 
5900f28986aSGreg Clayton   size_t data_len = array_len * sizeof(uint32_t);
5910f28986aSGreg Clayton 
5920f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
5930f28986aSGreg Clayton 
5940f28986aSGreg Clayton   if (!m_opaque_sp.get())
595b9c1b51eSKate Stone     m_opaque_sp.reset(
596b9c1b51eSKate Stone         new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize()));
5970f28986aSGreg Clayton   else
5980f28986aSGreg Clayton     m_opaque_sp->SetData(buffer_sp);
5990f28986aSGreg Clayton 
6000f28986aSGreg Clayton   if (log)
601b9c1b51eSKate Stone     log->Printf("SBData::SetDataFromUInt32Array (array=%p, array_len = %" PRIu64
602b9c1b51eSKate Stone                 ") => "
603b9c1b51eSKate Stone                 "true",
604b9c1b51eSKate Stone                 static_cast<void *>(array), static_cast<uint64_t>(array_len));
6050f28986aSGreg Clayton 
6060f28986aSGreg Clayton   return true;
6070f28986aSGreg Clayton }
6080f28986aSGreg Clayton 
609b9c1b51eSKate Stone bool SBData::SetDataFromSInt64Array(int64_t *array, size_t array_len) {
6105160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
6110f28986aSGreg Clayton 
612b9c1b51eSKate Stone   if (!array || array_len == 0) {
6130f28986aSGreg Clayton     if (log)
614b9c1b51eSKate Stone       log->Printf(
615b9c1b51eSKate Stone           "SBData::SetDataFromSInt64Array (array=%p, array_len = %" PRIu64
616b9c1b51eSKate Stone           ") => "
617b9c1b51eSKate Stone           "false",
618b9c1b51eSKate Stone           static_cast<void *>(array), static_cast<uint64_t>(array_len));
6190f28986aSGreg Clayton     return false;
6200f28986aSGreg Clayton   }
6210f28986aSGreg Clayton 
6220f28986aSGreg Clayton   size_t data_len = array_len * sizeof(int64_t);
6230f28986aSGreg Clayton 
6240f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
6250f28986aSGreg Clayton 
6260f28986aSGreg Clayton   if (!m_opaque_sp.get())
627b9c1b51eSKate Stone     m_opaque_sp.reset(
628b9c1b51eSKate Stone         new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize()));
6290f28986aSGreg Clayton   else
6300f28986aSGreg Clayton     m_opaque_sp->SetData(buffer_sp);
6310f28986aSGreg Clayton 
6320f28986aSGreg Clayton   if (log)
633b9c1b51eSKate Stone     log->Printf("SBData::SetDataFromSInt64Array (array=%p, array_len = %" PRIu64
634b9c1b51eSKate Stone                 ") => "
635b9c1b51eSKate Stone                 "true",
636b9c1b51eSKate Stone                 static_cast<void *>(array), static_cast<uint64_t>(array_len));
6370f28986aSGreg Clayton 
6380f28986aSGreg Clayton   return true;
6390f28986aSGreg Clayton }
6400f28986aSGreg Clayton 
641b9c1b51eSKate Stone bool SBData::SetDataFromSInt32Array(int32_t *array, size_t array_len) {
6425160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
6430f28986aSGreg Clayton 
644b9c1b51eSKate Stone   if (!array || array_len == 0) {
6450f28986aSGreg Clayton     if (log)
646b9c1b51eSKate Stone       log->Printf(
647b9c1b51eSKate Stone           "SBData::SetDataFromSInt32Array (array=%p, array_len = %" PRIu64
648b9c1b51eSKate Stone           ") => "
649b9c1b51eSKate Stone           "false",
650b9c1b51eSKate Stone           static_cast<void *>(array), static_cast<uint64_t>(array_len));
6510f28986aSGreg Clayton     return false;
6520f28986aSGreg Clayton   }
6530f28986aSGreg Clayton 
6540f28986aSGreg Clayton   size_t data_len = array_len * sizeof(int32_t);
6550f28986aSGreg Clayton 
6560f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
6570f28986aSGreg Clayton 
6580f28986aSGreg Clayton   if (!m_opaque_sp.get())
659b9c1b51eSKate Stone     m_opaque_sp.reset(
660b9c1b51eSKate Stone         new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize()));
6610f28986aSGreg Clayton   else
6620f28986aSGreg Clayton     m_opaque_sp->SetData(buffer_sp);
6630f28986aSGreg Clayton 
6640f28986aSGreg Clayton   if (log)
665b9c1b51eSKate Stone     log->Printf("SBData::SetDataFromSInt32Array (array=%p, array_len = %" PRIu64
666b9c1b51eSKate Stone                 ") => "
667b9c1b51eSKate Stone                 "true",
668b9c1b51eSKate Stone                 static_cast<void *>(array), static_cast<uint64_t>(array_len));
6690f28986aSGreg Clayton 
6700f28986aSGreg Clayton   return true;
6710f28986aSGreg Clayton }
6720f28986aSGreg Clayton 
673b9c1b51eSKate Stone bool SBData::SetDataFromDoubleArray(double *array, size_t array_len) {
6745160ce5cSGreg Clayton   Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_API));
6750f28986aSGreg Clayton 
676b9c1b51eSKate Stone   if (!array || array_len == 0) {
6770f28986aSGreg Clayton     if (log)
678b9c1b51eSKate Stone       log->Printf(
679b9c1b51eSKate Stone           "SBData::SetDataFromDoubleArray (array=%p, array_len = %" PRIu64
680b9c1b51eSKate Stone           ") => "
681b9c1b51eSKate Stone           "false",
682b9c1b51eSKate Stone           static_cast<void *>(array), static_cast<uint64_t>(array_len));
6830f28986aSGreg Clayton     return false;
6840f28986aSGreg Clayton   }
6850f28986aSGreg Clayton 
6860f28986aSGreg Clayton   size_t data_len = array_len * sizeof(double);
6870f28986aSGreg Clayton 
6880f28986aSGreg Clayton   lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len));
6890f28986aSGreg Clayton 
6900f28986aSGreg Clayton   if (!m_opaque_sp.get())
691b9c1b51eSKate Stone     m_opaque_sp.reset(
692b9c1b51eSKate Stone         new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize()));
6930f28986aSGreg Clayton   else
6940f28986aSGreg Clayton     m_opaque_sp->SetData(buffer_sp);
6950f28986aSGreg Clayton 
6960f28986aSGreg Clayton   if (log)
697b9c1b51eSKate Stone     log->Printf("SBData::SetDataFromDoubleArray (array=%p, array_len = %" PRIu64
698b9c1b51eSKate Stone                 ") => "
699b9c1b51eSKate Stone                 "true",
700b9c1b51eSKate Stone                 static_cast<void *>(array), static_cast<uint64_t>(array_len));
7010f28986aSGreg Clayton 
7020f28986aSGreg Clayton   return true;
7030f28986aSGreg Clayton }
704