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 109128ee2fSEnrico Granata #include "lldb/API/SBData.h" 119128ee2fSEnrico Granata #include "lldb/API/SBError.h" 129128ee2fSEnrico Granata #include "lldb/API/SBStream.h" 139128ee2fSEnrico Granata 140f28986aSGreg Clayton #include "lldb/Core/DataBufferHeap.h" 159128ee2fSEnrico Granata #include "lldb/Core/DataExtractor.h" 169128ee2fSEnrico Granata #include "lldb/Core/Log.h" 17da7bc7d0SGreg Clayton #include "lldb/Core/Stream.h" 18da7bc7d0SGreg Clayton 199128ee2fSEnrico Granata 209128ee2fSEnrico Granata using namespace lldb; 219128ee2fSEnrico Granata using namespace lldb_private; 229128ee2fSEnrico Granata 230f28986aSGreg Clayton SBData::SBData () : 240f28986aSGreg Clayton m_opaque_sp(new DataExtractor()) 259128ee2fSEnrico Granata { 269128ee2fSEnrico Granata } 279128ee2fSEnrico Granata 289128ee2fSEnrico Granata SBData::SBData (const lldb::DataExtractorSP& data_sp) : 299128ee2fSEnrico Granata m_opaque_sp (data_sp) 309128ee2fSEnrico Granata { 319128ee2fSEnrico Granata } 329128ee2fSEnrico Granata 339128ee2fSEnrico Granata SBData::SBData(const SBData &rhs) : 349128ee2fSEnrico Granata m_opaque_sp (rhs.m_opaque_sp) 359128ee2fSEnrico Granata { 369128ee2fSEnrico Granata } 379128ee2fSEnrico Granata 389128ee2fSEnrico Granata const SBData & 399128ee2fSEnrico Granata SBData::operator = (const SBData &rhs) 409128ee2fSEnrico Granata { 419128ee2fSEnrico Granata if (this != &rhs) 429128ee2fSEnrico Granata m_opaque_sp = rhs.m_opaque_sp; 439128ee2fSEnrico Granata return *this; 449128ee2fSEnrico Granata } 459128ee2fSEnrico Granata 469128ee2fSEnrico Granata SBData::~SBData () 479128ee2fSEnrico Granata { 489128ee2fSEnrico Granata } 499128ee2fSEnrico Granata 509128ee2fSEnrico Granata void 519128ee2fSEnrico Granata SBData::SetOpaque (const lldb::DataExtractorSP &data_sp) 529128ee2fSEnrico Granata { 539128ee2fSEnrico Granata m_opaque_sp = data_sp; 549128ee2fSEnrico Granata } 559128ee2fSEnrico Granata 569128ee2fSEnrico Granata lldb_private::DataExtractor * 579128ee2fSEnrico Granata SBData::get() const 589128ee2fSEnrico Granata { 599128ee2fSEnrico Granata return m_opaque_sp.get(); 609128ee2fSEnrico Granata } 619128ee2fSEnrico Granata 629128ee2fSEnrico Granata lldb_private::DataExtractor * 639128ee2fSEnrico Granata SBData::operator->() const 649128ee2fSEnrico Granata { 659128ee2fSEnrico Granata return m_opaque_sp.operator->(); 669128ee2fSEnrico Granata } 679128ee2fSEnrico Granata 689128ee2fSEnrico Granata lldb::DataExtractorSP & 699128ee2fSEnrico Granata SBData::operator*() 709128ee2fSEnrico Granata { 719128ee2fSEnrico Granata return m_opaque_sp; 729128ee2fSEnrico Granata } 739128ee2fSEnrico Granata 749128ee2fSEnrico Granata const lldb::DataExtractorSP & 759128ee2fSEnrico Granata SBData::operator*() const 769128ee2fSEnrico Granata { 779128ee2fSEnrico Granata return m_opaque_sp; 789128ee2fSEnrico Granata } 799128ee2fSEnrico Granata 809128ee2fSEnrico Granata bool 819128ee2fSEnrico Granata SBData::IsValid() 829128ee2fSEnrico Granata { 839128ee2fSEnrico Granata return m_opaque_sp.get() != NULL; 849128ee2fSEnrico Granata } 859128ee2fSEnrico Granata 869128ee2fSEnrico Granata uint8_t 879128ee2fSEnrico Granata SBData::GetAddressByteSize () 889128ee2fSEnrico Granata { 895160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 909128ee2fSEnrico Granata uint8_t value = 0; 919128ee2fSEnrico Granata if (m_opaque_sp.get()) 929128ee2fSEnrico Granata value = m_opaque_sp->GetAddressByteSize(); 939128ee2fSEnrico Granata if (log) 949128ee2fSEnrico Granata log->Printf ("SBData::GetAddressByteSize () => " 959128ee2fSEnrico Granata "(%i)", value); 969128ee2fSEnrico Granata return value; 979128ee2fSEnrico Granata } 989128ee2fSEnrico Granata 999128ee2fSEnrico Granata void 1000f28986aSGreg Clayton SBData::SetAddressByteSize (uint8_t addr_byte_size) 1010f28986aSGreg Clayton { 1025160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1030f28986aSGreg Clayton if (m_opaque_sp.get()) 1040f28986aSGreg Clayton m_opaque_sp->SetAddressByteSize(addr_byte_size); 1050f28986aSGreg Clayton if (log) 1060f28986aSGreg Clayton log->Printf ("SBData::SetAddressByteSize (%i)", addr_byte_size); 1070f28986aSGreg Clayton } 1080f28986aSGreg Clayton 1090f28986aSGreg Clayton void 1109128ee2fSEnrico Granata SBData::Clear () 1119128ee2fSEnrico Granata { 1129128ee2fSEnrico Granata if (m_opaque_sp.get()) 1139128ee2fSEnrico Granata m_opaque_sp->Clear(); 1149128ee2fSEnrico Granata } 1159128ee2fSEnrico Granata 1169128ee2fSEnrico Granata size_t 1179128ee2fSEnrico Granata SBData::GetByteSize () 1189128ee2fSEnrico Granata { 1195160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1209128ee2fSEnrico Granata size_t value = 0; 1219128ee2fSEnrico Granata if (m_opaque_sp.get()) 1229128ee2fSEnrico Granata value = m_opaque_sp->GetByteSize(); 1239128ee2fSEnrico Granata if (log) 1249128ee2fSEnrico Granata log->Printf ("SBData::GetByteSize () => " 1256fea17e8SGreg Clayton "( %" PRIu64 " )", (uint64_t)value); 1269128ee2fSEnrico Granata return value; 1279128ee2fSEnrico Granata } 1289128ee2fSEnrico Granata 1299128ee2fSEnrico Granata lldb::ByteOrder 1309128ee2fSEnrico Granata SBData::GetByteOrder () 1319128ee2fSEnrico Granata { 1325160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1339128ee2fSEnrico Granata lldb::ByteOrder value = eByteOrderInvalid; 1349128ee2fSEnrico Granata if (m_opaque_sp.get()) 1359128ee2fSEnrico Granata value = m_opaque_sp->GetByteOrder(); 1369128ee2fSEnrico Granata if (log) 1379128ee2fSEnrico Granata log->Printf ("SBData::GetByteOrder () => " 1389128ee2fSEnrico Granata "(%i)", value); 1399128ee2fSEnrico Granata return value; 1409128ee2fSEnrico Granata } 1419128ee2fSEnrico Granata 1420f28986aSGreg Clayton void 1430f28986aSGreg Clayton SBData::SetByteOrder (lldb::ByteOrder endian) 1440f28986aSGreg Clayton { 1455160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1460f28986aSGreg Clayton if (m_opaque_sp.get()) 1470f28986aSGreg Clayton m_opaque_sp->SetByteOrder(endian); 1480f28986aSGreg Clayton if (log) 1490f28986aSGreg Clayton log->Printf ("SBData::GetByteOrder (%i)", endian); 1500f28986aSGreg Clayton } 1510f28986aSGreg Clayton 1520f28986aSGreg Clayton 1539128ee2fSEnrico Granata float 154c7bece56SGreg Clayton SBData::GetFloat (lldb::SBError& error, lldb::offset_t offset) 1559128ee2fSEnrico Granata { 1565160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1579128ee2fSEnrico Granata float value = 0; 1589128ee2fSEnrico Granata if (!m_opaque_sp.get()) 1599128ee2fSEnrico Granata { 1609128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 1619128ee2fSEnrico Granata } 1629128ee2fSEnrico Granata else 1639128ee2fSEnrico Granata { 1649128ee2fSEnrico Granata uint32_t old_offset = offset; 1659128ee2fSEnrico Granata value = m_opaque_sp->GetFloat(&offset); 1669128ee2fSEnrico Granata if (offset == old_offset) 1679128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1689128ee2fSEnrico Granata } 1699128ee2fSEnrico Granata if (log) 170*324a1036SSaleem Abdulrasool log->Printf ("SBData::GetFloat (error=%p,offset=%" PRIu64 ") => (%f)", 171*324a1036SSaleem Abdulrasool static_cast<void*>(error.get()), offset, value); 1729128ee2fSEnrico Granata return value; 1739128ee2fSEnrico Granata } 1749128ee2fSEnrico Granata 1759128ee2fSEnrico Granata double 176c7bece56SGreg Clayton SBData::GetDouble (lldb::SBError& error, lldb::offset_t offset) 1779128ee2fSEnrico Granata { 1785160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1799128ee2fSEnrico Granata double value = 0; 1809128ee2fSEnrico Granata if (!m_opaque_sp.get()) 1819128ee2fSEnrico Granata { 1829128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 1839128ee2fSEnrico Granata } 1849128ee2fSEnrico Granata else 1859128ee2fSEnrico Granata { 1869128ee2fSEnrico Granata uint32_t old_offset = offset; 1879128ee2fSEnrico Granata value = m_opaque_sp->GetDouble(&offset); 1889128ee2fSEnrico Granata if (offset == old_offset) 1899128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1909128ee2fSEnrico Granata } 1919128ee2fSEnrico Granata if (log) 192c7bece56SGreg Clayton log->Printf ("SBData::GetDouble (error=%p,offset=%" PRIu64 ") => " 193*324a1036SSaleem Abdulrasool "(%f)", static_cast<void*>(error.get()), offset, value); 1949128ee2fSEnrico Granata return value; 1959128ee2fSEnrico Granata } 1969128ee2fSEnrico Granata 1979128ee2fSEnrico Granata long double 198c7bece56SGreg Clayton SBData::GetLongDouble (lldb::SBError& error, lldb::offset_t offset) 1999128ee2fSEnrico Granata { 2005160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2019128ee2fSEnrico Granata long double value = 0; 2029128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2039128ee2fSEnrico Granata { 2049128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2059128ee2fSEnrico Granata } 2069128ee2fSEnrico Granata else 2079128ee2fSEnrico Granata { 2089128ee2fSEnrico Granata uint32_t old_offset = offset; 2099128ee2fSEnrico Granata value = m_opaque_sp->GetLongDouble(&offset); 2109128ee2fSEnrico Granata if (offset == old_offset) 2119128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2129128ee2fSEnrico Granata } 2139128ee2fSEnrico Granata if (log) 214c7bece56SGreg Clayton log->Printf ("SBData::GetLongDouble (error=%p,offset=%" PRIu64 ") => " 215*324a1036SSaleem Abdulrasool "(%Lf)", static_cast<void*>(error.get()), offset, value); 2169128ee2fSEnrico Granata return value; 2179128ee2fSEnrico Granata } 2189128ee2fSEnrico Granata 2199128ee2fSEnrico Granata lldb::addr_t 220c7bece56SGreg Clayton SBData::GetAddress (lldb::SBError& error, lldb::offset_t offset) 2219128ee2fSEnrico Granata { 2225160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2239128ee2fSEnrico Granata lldb::addr_t value = 0; 2249128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2259128ee2fSEnrico Granata { 2269128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2279128ee2fSEnrico Granata } 2289128ee2fSEnrico Granata else 2299128ee2fSEnrico Granata { 2309128ee2fSEnrico Granata uint32_t old_offset = offset; 2319128ee2fSEnrico Granata value = m_opaque_sp->GetAddress(&offset); 2329128ee2fSEnrico Granata if (offset == old_offset) 2339128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2349128ee2fSEnrico Granata } 2359128ee2fSEnrico Granata if (log) 236c7bece56SGreg Clayton log->Printf ("SBData::GetAddress (error=%p,offset=%" PRIu64 ") => " 237*324a1036SSaleem Abdulrasool "(%p)", static_cast<void*>(error.get()), offset, 238*324a1036SSaleem Abdulrasool reinterpret_cast<void*>(value)); 2399128ee2fSEnrico Granata return value; 2409128ee2fSEnrico Granata } 2419128ee2fSEnrico Granata 2429128ee2fSEnrico Granata uint8_t 243c7bece56SGreg Clayton SBData::GetUnsignedInt8 (lldb::SBError& error, lldb::offset_t offset) 2449128ee2fSEnrico Granata { 2455160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2469128ee2fSEnrico Granata uint8_t value = 0; 2479128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2489128ee2fSEnrico Granata { 2499128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2509128ee2fSEnrico Granata } 2519128ee2fSEnrico Granata else 2529128ee2fSEnrico Granata { 2539128ee2fSEnrico Granata uint32_t old_offset = offset; 2549128ee2fSEnrico Granata value = m_opaque_sp->GetU8(&offset); 2559128ee2fSEnrico Granata if (offset == old_offset) 2569128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2579128ee2fSEnrico Granata } 2589128ee2fSEnrico Granata if (log) 259c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt8 (error=%p,offset=%" PRIu64 ") => " 260*324a1036SSaleem Abdulrasool "(%c)", static_cast<void*>(error.get()), offset, value); 2619128ee2fSEnrico Granata return value; 2629128ee2fSEnrico Granata } 2639128ee2fSEnrico Granata 2649128ee2fSEnrico Granata uint16_t 265c7bece56SGreg Clayton SBData::GetUnsignedInt16 (lldb::SBError& error, lldb::offset_t offset) 2669128ee2fSEnrico Granata { 2675160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2689128ee2fSEnrico Granata uint16_t value = 0; 2699128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2709128ee2fSEnrico Granata { 2719128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2729128ee2fSEnrico Granata } 2739128ee2fSEnrico Granata else 2749128ee2fSEnrico Granata { 2759128ee2fSEnrico Granata uint32_t old_offset = offset; 2769128ee2fSEnrico Granata value = m_opaque_sp->GetU16(&offset); 2779128ee2fSEnrico Granata if (offset == old_offset) 2789128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2799128ee2fSEnrico Granata } 2809128ee2fSEnrico Granata if (log) 281c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt16 (error=%p,offset=%" PRIu64 ") => " 282*324a1036SSaleem Abdulrasool "(%hd)", static_cast<void*>(error.get()), offset, value); 2839128ee2fSEnrico Granata return value; 2849128ee2fSEnrico Granata } 2859128ee2fSEnrico Granata 2869128ee2fSEnrico Granata uint32_t 287c7bece56SGreg Clayton SBData::GetUnsignedInt32 (lldb::SBError& error, lldb::offset_t offset) 2889128ee2fSEnrico Granata { 2895160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2909128ee2fSEnrico Granata uint32_t value = 0; 2919128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2929128ee2fSEnrico Granata { 2939128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2949128ee2fSEnrico Granata } 2959128ee2fSEnrico Granata else 2969128ee2fSEnrico Granata { 2979128ee2fSEnrico Granata uint32_t old_offset = offset; 2989128ee2fSEnrico Granata value = m_opaque_sp->GetU32(&offset); 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::GetUnsignedInt32 (error=%p,offset=%" PRIu64 ") => " 304*324a1036SSaleem Abdulrasool "(%d)", static_cast<void*>(error.get()), offset, value); 3059128ee2fSEnrico Granata return value; 3069128ee2fSEnrico Granata } 3079128ee2fSEnrico Granata 3089128ee2fSEnrico Granata uint64_t 309c7bece56SGreg Clayton SBData::GetUnsignedInt64 (lldb::SBError& error, lldb::offset_t offset) 3109128ee2fSEnrico Granata { 3115160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3129128ee2fSEnrico Granata uint64_t value = 0; 3139128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3149128ee2fSEnrico Granata { 3159128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3169128ee2fSEnrico Granata } 3179128ee2fSEnrico Granata else 3189128ee2fSEnrico Granata { 3199128ee2fSEnrico Granata uint32_t old_offset = offset; 3209128ee2fSEnrico Granata value = m_opaque_sp->GetU64(&offset); 3219128ee2fSEnrico Granata if (offset == old_offset) 3229128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3239128ee2fSEnrico Granata } 3249128ee2fSEnrico Granata if (log) 325c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt64 (error=%p,offset=%" PRIu64 ") => " 326*324a1036SSaleem Abdulrasool "(%" PRId64 ")", static_cast<void*>(error.get()), offset, 327*324a1036SSaleem Abdulrasool value); 3289128ee2fSEnrico Granata return value; 3299128ee2fSEnrico Granata } 3309128ee2fSEnrico Granata 3319128ee2fSEnrico Granata int8_t 332c7bece56SGreg Clayton SBData::GetSignedInt8 (lldb::SBError& error, lldb::offset_t offset) 3339128ee2fSEnrico Granata { 3345160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3359128ee2fSEnrico Granata int8_t value = 0; 3369128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3379128ee2fSEnrico Granata { 3389128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3399128ee2fSEnrico Granata } 3409128ee2fSEnrico Granata else 3419128ee2fSEnrico Granata { 3429128ee2fSEnrico Granata uint32_t old_offset = offset; 3439128ee2fSEnrico Granata value = (int8_t)m_opaque_sp->GetMaxS64(&offset, 1); 3449128ee2fSEnrico Granata if (offset == old_offset) 3459128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3469128ee2fSEnrico Granata } 3479128ee2fSEnrico Granata if (log) 348c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt8 (error=%p,offset=%" PRIu64 ") => " 349*324a1036SSaleem Abdulrasool "(%c)", static_cast<void*>(error.get()), offset, value); 3509128ee2fSEnrico Granata return value; 3519128ee2fSEnrico Granata } 3529128ee2fSEnrico Granata 3539128ee2fSEnrico Granata int16_t 354c7bece56SGreg Clayton SBData::GetSignedInt16 (lldb::SBError& error, lldb::offset_t offset) 3559128ee2fSEnrico Granata { 3565160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3579128ee2fSEnrico Granata int16_t value = 0; 3589128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3599128ee2fSEnrico Granata { 3609128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3619128ee2fSEnrico Granata } 3629128ee2fSEnrico Granata else 3639128ee2fSEnrico Granata { 3649128ee2fSEnrico Granata uint32_t old_offset = offset; 3659128ee2fSEnrico Granata value = (int16_t)m_opaque_sp->GetMaxS64(&offset, 2); 3669128ee2fSEnrico Granata if (offset == old_offset) 3679128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3689128ee2fSEnrico Granata } 3699128ee2fSEnrico Granata if (log) 370c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt16 (error=%p,offset=%" PRIu64 ") => " 371*324a1036SSaleem Abdulrasool "(%hd)", static_cast<void*>(error.get()), offset, value); 3729128ee2fSEnrico Granata return value; 3739128ee2fSEnrico Granata } 3749128ee2fSEnrico Granata 3759128ee2fSEnrico Granata int32_t 376c7bece56SGreg Clayton SBData::GetSignedInt32 (lldb::SBError& error, lldb::offset_t offset) 3779128ee2fSEnrico Granata { 3785160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3799128ee2fSEnrico Granata int32_t value = 0; 3809128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3819128ee2fSEnrico Granata { 3829128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3839128ee2fSEnrico Granata } 3849128ee2fSEnrico Granata else 3859128ee2fSEnrico Granata { 3869128ee2fSEnrico Granata uint32_t old_offset = offset; 3879128ee2fSEnrico Granata value = (int32_t)m_opaque_sp->GetMaxS64(&offset, 4); 3889128ee2fSEnrico Granata if (offset == old_offset) 3899128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3909128ee2fSEnrico Granata } 3919128ee2fSEnrico Granata if (log) 392c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt32 (error=%p,offset=%" PRIu64 ") => " 393*324a1036SSaleem Abdulrasool "(%d)", static_cast<void*>(error.get()), offset, value); 3949128ee2fSEnrico Granata return value; 3959128ee2fSEnrico Granata } 3969128ee2fSEnrico Granata 3979128ee2fSEnrico Granata int64_t 398c7bece56SGreg Clayton SBData::GetSignedInt64 (lldb::SBError& error, lldb::offset_t offset) 3999128ee2fSEnrico Granata { 4005160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4019128ee2fSEnrico Granata int64_t value = 0; 4029128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4039128ee2fSEnrico Granata { 4049128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4059128ee2fSEnrico Granata } 4069128ee2fSEnrico Granata else 4079128ee2fSEnrico Granata { 4089128ee2fSEnrico Granata uint32_t old_offset = offset; 4099128ee2fSEnrico Granata value = (int64_t)m_opaque_sp->GetMaxS64(&offset, 8); 4109128ee2fSEnrico Granata if (offset == old_offset) 4119128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4129128ee2fSEnrico Granata } 4139128ee2fSEnrico Granata if (log) 414c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt64 (error=%p,offset=%" PRIu64 ") => " 415*324a1036SSaleem Abdulrasool "(%" PRId64 ")", static_cast<void*>(error.get()), offset, 416*324a1036SSaleem Abdulrasool value); 4179128ee2fSEnrico Granata return value; 4189128ee2fSEnrico Granata } 4199128ee2fSEnrico Granata 4209128ee2fSEnrico Granata const char* 421c7bece56SGreg Clayton SBData::GetString (lldb::SBError& error, lldb::offset_t offset) 4229128ee2fSEnrico Granata { 4235160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4249128ee2fSEnrico Granata const char* value = 0; 4259128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4269128ee2fSEnrico Granata { 4279128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4289128ee2fSEnrico Granata } 4299128ee2fSEnrico Granata else 4309128ee2fSEnrico Granata { 4319128ee2fSEnrico Granata uint32_t old_offset = offset; 4329128ee2fSEnrico Granata value = m_opaque_sp->GetCStr(&offset); 4339128ee2fSEnrico Granata if (offset == old_offset || (value == NULL)) 4349128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4359128ee2fSEnrico Granata } 4369128ee2fSEnrico Granata if (log) 437*324a1036SSaleem Abdulrasool log->Printf ("SBData::GetString (error=%p,offset=%" PRIu64 ") => (%p)", 438*324a1036SSaleem Abdulrasool static_cast<void*>(error.get()), offset, 439*324a1036SSaleem Abdulrasool static_cast<const void*>(value)); 4409128ee2fSEnrico Granata return value; 4419128ee2fSEnrico Granata } 4429128ee2fSEnrico Granata 4439128ee2fSEnrico Granata bool 444d9dc52dcSGreg Clayton SBData::GetDescription (lldb::SBStream &description, lldb::addr_t base_addr) 4459128ee2fSEnrico Granata { 446da7bc7d0SGreg Clayton Stream &strm = description.ref(); 447da7bc7d0SGreg Clayton 4489128ee2fSEnrico Granata if (m_opaque_sp) 4499128ee2fSEnrico Granata { 450da7bc7d0SGreg Clayton m_opaque_sp->Dump (&strm, 4519128ee2fSEnrico Granata 0, 4529128ee2fSEnrico Granata lldb::eFormatBytesWithASCII, 4539128ee2fSEnrico Granata 1, 4549128ee2fSEnrico Granata m_opaque_sp->GetByteSize(), 4559128ee2fSEnrico Granata 16, 456d9dc52dcSGreg Clayton base_addr, 4579128ee2fSEnrico Granata 0, 4589128ee2fSEnrico Granata 0); 4599128ee2fSEnrico Granata } 4609128ee2fSEnrico Granata else 461da7bc7d0SGreg Clayton strm.PutCString ("No value"); 4629128ee2fSEnrico Granata 4639128ee2fSEnrico Granata return true; 4649128ee2fSEnrico Granata } 4659128ee2fSEnrico Granata 4669128ee2fSEnrico Granata size_t 4679128ee2fSEnrico Granata SBData::ReadRawData (lldb::SBError& error, 468c7bece56SGreg Clayton lldb::offset_t offset, 4699128ee2fSEnrico Granata void *buf, 4709128ee2fSEnrico Granata size_t size) 4719128ee2fSEnrico Granata { 4725160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4739128ee2fSEnrico Granata void* ok = NULL; 4749128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4759128ee2fSEnrico Granata { 4769128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4779128ee2fSEnrico Granata } 4789128ee2fSEnrico Granata else 4799128ee2fSEnrico Granata { 4809128ee2fSEnrico Granata uint32_t old_offset = offset; 4819128ee2fSEnrico Granata ok = m_opaque_sp->GetU8(&offset, buf, size); 4829128ee2fSEnrico Granata if ((offset == old_offset) || (ok == NULL)) 4839128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4849128ee2fSEnrico Granata } 4859128ee2fSEnrico Granata if (log) 4866fea17e8SGreg Clayton log->Printf("SBData::ReadRawData (error=%p,offset=%" PRIu64 ",buf=%p,size=%" PRIu64 ") => " 487*324a1036SSaleem Abdulrasool "(%p)", static_cast<void*>(error.get()), offset, 488*324a1036SSaleem Abdulrasool static_cast<void*>(buf), static_cast<uint64_t>(size), 489*324a1036SSaleem Abdulrasool static_cast<void*>(ok)); 4909128ee2fSEnrico Granata return ok ? size : 0; 4919128ee2fSEnrico Granata } 4929128ee2fSEnrico Granata 4939128ee2fSEnrico Granata void 4949128ee2fSEnrico Granata SBData::SetData (lldb::SBError& error, 4959128ee2fSEnrico Granata const void *buf, 4969128ee2fSEnrico Granata size_t size, 4979128ee2fSEnrico Granata lldb::ByteOrder endian, 4989128ee2fSEnrico Granata uint8_t addr_size) 4999128ee2fSEnrico Granata { 5005160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 5019128ee2fSEnrico Granata if (!m_opaque_sp.get()) 5029128ee2fSEnrico Granata m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); 5039128ee2fSEnrico Granata else 5049128ee2fSEnrico Granata m_opaque_sp->SetData(buf, size, endian); 5059128ee2fSEnrico Granata if (log) 5066fea17e8SGreg Clayton log->Printf("SBData::SetData (error=%p,buf=%p,size=%" PRIu64 ",endian=%d,addr_size=%c) => " 507*324a1036SSaleem Abdulrasool "(%p)", static_cast<void*>(error.get()), 508*324a1036SSaleem Abdulrasool static_cast<const void*>(buf), static_cast<uint64_t>(size), 509*324a1036SSaleem Abdulrasool endian, addr_size, static_cast<void*>(m_opaque_sp.get())); 5109128ee2fSEnrico Granata } 5119128ee2fSEnrico Granata 5129128ee2fSEnrico Granata bool 5139128ee2fSEnrico Granata SBData::Append (const SBData& rhs) 5149128ee2fSEnrico Granata { 5155160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 5169128ee2fSEnrico Granata bool value = false; 5179128ee2fSEnrico Granata if (m_opaque_sp.get() && rhs.m_opaque_sp.get()) 5189128ee2fSEnrico Granata value = m_opaque_sp.get()->Append(*rhs.m_opaque_sp); 5199128ee2fSEnrico Granata if (log) 520*324a1036SSaleem Abdulrasool log->Printf ("SBData::Append (rhs=%p) => (%s)", 521*324a1036SSaleem Abdulrasool static_cast<void*>(rhs.get()), value ? "true" : "false"); 5229128ee2fSEnrico Granata return value; 5239128ee2fSEnrico Granata } 5240f28986aSGreg Clayton 5250f28986aSGreg Clayton lldb::SBData 5260f28986aSGreg Clayton SBData::CreateDataFromCString (lldb::ByteOrder endian, uint32_t addr_byte_size, const char* data) 5270f28986aSGreg Clayton { 5280f28986aSGreg Clayton if (!data || !data[0]) 5290f28986aSGreg Clayton return SBData(); 5300f28986aSGreg Clayton 5310f28986aSGreg Clayton uint32_t data_len = strlen(data); 5320f28986aSGreg Clayton 5330f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 5340f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5350f28986aSGreg Clayton 5360f28986aSGreg Clayton SBData ret(data_sp); 5370f28986aSGreg Clayton 5380f28986aSGreg Clayton return ret; 5390f28986aSGreg Clayton } 5400f28986aSGreg Clayton 5410f28986aSGreg Clayton lldb::SBData 5420f28986aSGreg Clayton SBData::CreateDataFromUInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint64_t* array, size_t array_len) 5430f28986aSGreg Clayton { 5440f28986aSGreg Clayton if (!array || array_len == 0) 5450f28986aSGreg Clayton return SBData(); 5460f28986aSGreg Clayton 5470f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint64_t); 5480f28986aSGreg Clayton 5490f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5500f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5510f28986aSGreg Clayton 5520f28986aSGreg Clayton SBData ret(data_sp); 5530f28986aSGreg Clayton 5540f28986aSGreg Clayton return ret; 5550f28986aSGreg Clayton } 5560f28986aSGreg Clayton 5570f28986aSGreg Clayton lldb::SBData 5580f28986aSGreg Clayton SBData::CreateDataFromUInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint32_t* array, size_t array_len) 5590f28986aSGreg Clayton { 5600f28986aSGreg Clayton if (!array || array_len == 0) 5610f28986aSGreg Clayton return SBData(); 5620f28986aSGreg Clayton 5630f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint32_t); 5640f28986aSGreg Clayton 5650f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5660f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5670f28986aSGreg Clayton 5680f28986aSGreg Clayton SBData ret(data_sp); 5690f28986aSGreg Clayton 5700f28986aSGreg Clayton return ret; 5710f28986aSGreg Clayton } 5720f28986aSGreg Clayton 5730f28986aSGreg Clayton lldb::SBData 5740f28986aSGreg Clayton SBData::CreateDataFromSInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int64_t* array, size_t array_len) 5750f28986aSGreg Clayton { 5760f28986aSGreg Clayton if (!array || array_len == 0) 5770f28986aSGreg Clayton return SBData(); 5780f28986aSGreg Clayton 5790f28986aSGreg Clayton size_t data_len = array_len * sizeof(int64_t); 5800f28986aSGreg Clayton 5810f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5820f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5830f28986aSGreg Clayton 5840f28986aSGreg Clayton SBData ret(data_sp); 5850f28986aSGreg Clayton 5860f28986aSGreg Clayton return ret; 5870f28986aSGreg Clayton } 5880f28986aSGreg Clayton 5890f28986aSGreg Clayton lldb::SBData 5900f28986aSGreg Clayton SBData::CreateDataFromSInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int32_t* array, size_t array_len) 5910f28986aSGreg Clayton { 5920f28986aSGreg Clayton if (!array || array_len == 0) 5930f28986aSGreg Clayton return SBData(); 5940f28986aSGreg Clayton 5950f28986aSGreg Clayton size_t data_len = array_len * sizeof(int32_t); 5960f28986aSGreg Clayton 5970f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5980f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5990f28986aSGreg Clayton 6000f28986aSGreg Clayton SBData ret(data_sp); 6010f28986aSGreg Clayton 6020f28986aSGreg Clayton return ret; 6030f28986aSGreg Clayton } 6040f28986aSGreg Clayton 6050f28986aSGreg Clayton lldb::SBData 6060f28986aSGreg Clayton SBData::CreateDataFromDoubleArray (lldb::ByteOrder endian, uint32_t addr_byte_size, double* array, size_t array_len) 6070f28986aSGreg Clayton { 6080f28986aSGreg Clayton if (!array || array_len == 0) 6090f28986aSGreg Clayton return SBData(); 6100f28986aSGreg Clayton 6110f28986aSGreg Clayton size_t data_len = array_len * sizeof(double); 6120f28986aSGreg Clayton 6130f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6140f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 6150f28986aSGreg Clayton 6160f28986aSGreg Clayton SBData ret(data_sp); 6170f28986aSGreg Clayton 6180f28986aSGreg Clayton return ret; 6190f28986aSGreg Clayton } 6200f28986aSGreg Clayton 6210f28986aSGreg Clayton bool 6220f28986aSGreg Clayton SBData::SetDataFromCString (const char* data) 6230f28986aSGreg Clayton { 6245160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6250f28986aSGreg Clayton 6260f28986aSGreg Clayton if (!data) 6270f28986aSGreg Clayton { 6280f28986aSGreg Clayton if (log) 629*324a1036SSaleem Abdulrasool log->Printf ("SBData::SetDataFromCString (data=%p) => false", 630*324a1036SSaleem Abdulrasool static_cast<const void*>(data)); 6310f28986aSGreg Clayton return false; 6320f28986aSGreg Clayton } 6330f28986aSGreg Clayton 6340f28986aSGreg Clayton size_t data_len = strlen(data); 6350f28986aSGreg Clayton 6360f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 6370f28986aSGreg Clayton 6380f28986aSGreg Clayton if (!m_opaque_sp.get()) 6390f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 6400f28986aSGreg Clayton else 6410f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6420f28986aSGreg Clayton 6430f28986aSGreg Clayton if (log) 644*324a1036SSaleem Abdulrasool log->Printf ("SBData::SetDataFromCString (data=%p) => true", 645*324a1036SSaleem Abdulrasool static_cast<const void*>(data)); 6460f28986aSGreg Clayton 6470f28986aSGreg Clayton return true; 6480f28986aSGreg Clayton } 6490f28986aSGreg Clayton 6500f28986aSGreg Clayton bool 6510f28986aSGreg Clayton SBData::SetDataFromUInt64Array (uint64_t* array, size_t array_len) 6520f28986aSGreg Clayton { 6535160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6540f28986aSGreg Clayton 6550f28986aSGreg Clayton if (!array || array_len == 0) 6560f28986aSGreg Clayton { 6570f28986aSGreg Clayton if (log) 6586fea17e8SGreg Clayton log->Printf("SBData::SetDataFromUInt64Array (array=%p, array_len = %" PRIu64 ") => " 659*324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 660*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 6610f28986aSGreg Clayton return false; 6620f28986aSGreg Clayton } 6630f28986aSGreg Clayton 6640f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint64_t); 6650f28986aSGreg Clayton 6660f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6670f28986aSGreg Clayton 6680f28986aSGreg Clayton if (!m_opaque_sp.get()) 6690f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 6700f28986aSGreg Clayton else 6710f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6720f28986aSGreg Clayton 6730f28986aSGreg Clayton if (log) 6746fea17e8SGreg Clayton log->Printf("SBData::SetDataFromUInt64Array (array=%p, array_len = %" PRIu64 ") => " 675*324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 676*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 6770f28986aSGreg Clayton 6780f28986aSGreg Clayton return true; 6790f28986aSGreg Clayton } 6800f28986aSGreg Clayton 6810f28986aSGreg Clayton bool 6820f28986aSGreg Clayton SBData::SetDataFromUInt32Array (uint32_t* array, size_t array_len) 6830f28986aSGreg Clayton { 6845160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6850f28986aSGreg Clayton 6860f28986aSGreg Clayton if (!array || array_len == 0) 6870f28986aSGreg Clayton { 6880f28986aSGreg Clayton if (log) 6896fea17e8SGreg Clayton log->Printf("SBData::SetDataFromUInt32Array (array=%p, array_len = %" PRIu64 ") => " 690*324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 691*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 6920f28986aSGreg Clayton return false; 6930f28986aSGreg Clayton } 6940f28986aSGreg Clayton 6950f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint32_t); 6960f28986aSGreg Clayton 6970f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6980f28986aSGreg Clayton 6990f28986aSGreg Clayton if (!m_opaque_sp.get()) 7000f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7010f28986aSGreg Clayton else 7020f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7030f28986aSGreg Clayton 7040f28986aSGreg Clayton if (log) 7056fea17e8SGreg Clayton log->Printf("SBData::SetDataFromUInt32Array (array=%p, array_len = %" PRIu64 ") => " 706*324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 707*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7080f28986aSGreg Clayton 7090f28986aSGreg Clayton return true; 7100f28986aSGreg Clayton } 7110f28986aSGreg Clayton 7120f28986aSGreg Clayton bool 7130f28986aSGreg Clayton SBData::SetDataFromSInt64Array (int64_t* array, size_t array_len) 7140f28986aSGreg Clayton { 7155160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7160f28986aSGreg Clayton 7170f28986aSGreg Clayton if (!array || array_len == 0) 7180f28986aSGreg Clayton { 7190f28986aSGreg Clayton if (log) 7206fea17e8SGreg Clayton log->Printf("SBData::SetDataFromSInt64Array (array=%p, array_len = %" PRIu64 ") => " 721*324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 722*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7230f28986aSGreg Clayton return false; 7240f28986aSGreg Clayton } 7250f28986aSGreg Clayton 7260f28986aSGreg Clayton size_t data_len = array_len * sizeof(int64_t); 7270f28986aSGreg Clayton 7280f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7290f28986aSGreg Clayton 7300f28986aSGreg Clayton if (!m_opaque_sp.get()) 7310f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7320f28986aSGreg Clayton else 7330f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7340f28986aSGreg Clayton 7350f28986aSGreg Clayton if (log) 7366fea17e8SGreg Clayton log->Printf("SBData::SetDataFromSInt64Array (array=%p, array_len = %" PRIu64 ") => " 737*324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 738*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7390f28986aSGreg Clayton 7400f28986aSGreg Clayton return true; 7410f28986aSGreg Clayton } 7420f28986aSGreg Clayton 7430f28986aSGreg Clayton bool 7440f28986aSGreg Clayton SBData::SetDataFromSInt32Array (int32_t* array, size_t array_len) 7450f28986aSGreg Clayton { 7465160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7470f28986aSGreg Clayton 7480f28986aSGreg Clayton if (!array || array_len == 0) 7490f28986aSGreg Clayton { 7500f28986aSGreg Clayton if (log) 7516fea17e8SGreg Clayton log->Printf("SBData::SetDataFromSInt32Array (array=%p, array_len = %" PRIu64 ") => " 752*324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 753*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7540f28986aSGreg Clayton return false; 7550f28986aSGreg Clayton } 7560f28986aSGreg Clayton 7570f28986aSGreg Clayton size_t data_len = array_len * sizeof(int32_t); 7580f28986aSGreg Clayton 7590f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7600f28986aSGreg Clayton 7610f28986aSGreg Clayton if (!m_opaque_sp.get()) 7620f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7630f28986aSGreg Clayton else 7640f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7650f28986aSGreg Clayton 7660f28986aSGreg Clayton if (log) 7676fea17e8SGreg Clayton log->Printf("SBData::SetDataFromSInt32Array (array=%p, array_len = %" PRIu64 ") => " 768*324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 769*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7700f28986aSGreg Clayton 7710f28986aSGreg Clayton return true; 7720f28986aSGreg Clayton } 7730f28986aSGreg Clayton 7740f28986aSGreg Clayton bool 7750f28986aSGreg Clayton SBData::SetDataFromDoubleArray (double* array, size_t array_len) 7760f28986aSGreg Clayton { 7775160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7780f28986aSGreg Clayton 7790f28986aSGreg Clayton if (!array || array_len == 0) 7800f28986aSGreg Clayton { 7810f28986aSGreg Clayton if (log) 7826fea17e8SGreg Clayton log->Printf("SBData::SetDataFromDoubleArray (array=%p, array_len = %" PRIu64 ") => " 783*324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 784*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7850f28986aSGreg Clayton return false; 7860f28986aSGreg Clayton } 7870f28986aSGreg Clayton 7880f28986aSGreg Clayton size_t data_len = array_len * sizeof(double); 7890f28986aSGreg Clayton 7900f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7910f28986aSGreg Clayton 7920f28986aSGreg Clayton if (!m_opaque_sp.get()) 7930f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7940f28986aSGreg Clayton else 7950f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7960f28986aSGreg Clayton 7970f28986aSGreg Clayton if (log) 7986fea17e8SGreg Clayton log->Printf("SBData::SetDataFromDoubleArray (array=%p, array_len = %" PRIu64 ") => " 799*324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 800*324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 8010f28986aSGreg Clayton 8020f28986aSGreg Clayton return true; 8030f28986aSGreg Clayton } 804