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 10*af90cf52SSean Callanan #include <inttypes.h> // PRIu64 11*af90cf52SSean 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" 189128ee2fSEnrico Granata #include "lldb/Core/Log.h" 19da7bc7d0SGreg Clayton #include "lldb/Core/Stream.h" 20da7bc7d0SGreg Clayton 219128ee2fSEnrico Granata 229128ee2fSEnrico Granata using namespace lldb; 239128ee2fSEnrico Granata using namespace lldb_private; 249128ee2fSEnrico Granata 250f28986aSGreg Clayton SBData::SBData () : 260f28986aSGreg Clayton m_opaque_sp(new DataExtractor()) 279128ee2fSEnrico Granata { 289128ee2fSEnrico Granata } 299128ee2fSEnrico Granata 309128ee2fSEnrico Granata SBData::SBData (const lldb::DataExtractorSP& data_sp) : 319128ee2fSEnrico Granata m_opaque_sp (data_sp) 329128ee2fSEnrico Granata { 339128ee2fSEnrico Granata } 349128ee2fSEnrico Granata 359128ee2fSEnrico Granata SBData::SBData(const SBData &rhs) : 369128ee2fSEnrico Granata m_opaque_sp (rhs.m_opaque_sp) 379128ee2fSEnrico Granata { 389128ee2fSEnrico Granata } 399128ee2fSEnrico Granata 409128ee2fSEnrico Granata const SBData & 419128ee2fSEnrico Granata SBData::operator = (const SBData &rhs) 429128ee2fSEnrico Granata { 439128ee2fSEnrico Granata if (this != &rhs) 449128ee2fSEnrico Granata m_opaque_sp = rhs.m_opaque_sp; 459128ee2fSEnrico Granata return *this; 469128ee2fSEnrico Granata } 479128ee2fSEnrico Granata 489128ee2fSEnrico Granata SBData::~SBData () 499128ee2fSEnrico Granata { 509128ee2fSEnrico Granata } 519128ee2fSEnrico Granata 529128ee2fSEnrico Granata void 539128ee2fSEnrico Granata SBData::SetOpaque (const lldb::DataExtractorSP &data_sp) 549128ee2fSEnrico Granata { 559128ee2fSEnrico Granata m_opaque_sp = data_sp; 569128ee2fSEnrico Granata } 579128ee2fSEnrico Granata 589128ee2fSEnrico Granata lldb_private::DataExtractor * 599128ee2fSEnrico Granata SBData::get() const 609128ee2fSEnrico Granata { 619128ee2fSEnrico Granata return m_opaque_sp.get(); 629128ee2fSEnrico Granata } 639128ee2fSEnrico Granata 649128ee2fSEnrico Granata lldb_private::DataExtractor * 659128ee2fSEnrico Granata SBData::operator->() const 669128ee2fSEnrico Granata { 679128ee2fSEnrico Granata return m_opaque_sp.operator->(); 689128ee2fSEnrico Granata } 699128ee2fSEnrico Granata 709128ee2fSEnrico Granata lldb::DataExtractorSP & 719128ee2fSEnrico Granata SBData::operator*() 729128ee2fSEnrico Granata { 739128ee2fSEnrico Granata return m_opaque_sp; 749128ee2fSEnrico Granata } 759128ee2fSEnrico Granata 769128ee2fSEnrico Granata const lldb::DataExtractorSP & 779128ee2fSEnrico Granata SBData::operator*() const 789128ee2fSEnrico Granata { 799128ee2fSEnrico Granata return m_opaque_sp; 809128ee2fSEnrico Granata } 819128ee2fSEnrico Granata 829128ee2fSEnrico Granata bool 839128ee2fSEnrico Granata SBData::IsValid() 849128ee2fSEnrico Granata { 859128ee2fSEnrico Granata return m_opaque_sp.get() != NULL; 869128ee2fSEnrico Granata } 879128ee2fSEnrico Granata 889128ee2fSEnrico Granata uint8_t 899128ee2fSEnrico Granata SBData::GetAddressByteSize () 909128ee2fSEnrico Granata { 915160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 929128ee2fSEnrico Granata uint8_t value = 0; 939128ee2fSEnrico Granata if (m_opaque_sp.get()) 949128ee2fSEnrico Granata value = m_opaque_sp->GetAddressByteSize(); 959128ee2fSEnrico Granata if (log) 969128ee2fSEnrico Granata log->Printf ("SBData::GetAddressByteSize () => " 979128ee2fSEnrico Granata "(%i)", value); 989128ee2fSEnrico Granata return value; 999128ee2fSEnrico Granata } 1009128ee2fSEnrico Granata 1019128ee2fSEnrico Granata void 1020f28986aSGreg Clayton SBData::SetAddressByteSize (uint8_t addr_byte_size) 1030f28986aSGreg Clayton { 1045160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1050f28986aSGreg Clayton if (m_opaque_sp.get()) 1060f28986aSGreg Clayton m_opaque_sp->SetAddressByteSize(addr_byte_size); 1070f28986aSGreg Clayton if (log) 1080f28986aSGreg Clayton log->Printf ("SBData::SetAddressByteSize (%i)", addr_byte_size); 1090f28986aSGreg Clayton } 1100f28986aSGreg Clayton 1110f28986aSGreg Clayton void 1129128ee2fSEnrico Granata SBData::Clear () 1139128ee2fSEnrico Granata { 1149128ee2fSEnrico Granata if (m_opaque_sp.get()) 1159128ee2fSEnrico Granata m_opaque_sp->Clear(); 1169128ee2fSEnrico Granata } 1179128ee2fSEnrico Granata 1189128ee2fSEnrico Granata size_t 1199128ee2fSEnrico Granata SBData::GetByteSize () 1209128ee2fSEnrico Granata { 1215160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1229128ee2fSEnrico Granata size_t value = 0; 1239128ee2fSEnrico Granata if (m_opaque_sp.get()) 1249128ee2fSEnrico Granata value = m_opaque_sp->GetByteSize(); 1259128ee2fSEnrico Granata if (log) 1269128ee2fSEnrico Granata log->Printf ("SBData::GetByteSize () => " 1276fea17e8SGreg Clayton "( %" PRIu64 " )", (uint64_t)value); 1289128ee2fSEnrico Granata return value; 1299128ee2fSEnrico Granata } 1309128ee2fSEnrico Granata 1319128ee2fSEnrico Granata lldb::ByteOrder 1329128ee2fSEnrico Granata SBData::GetByteOrder () 1339128ee2fSEnrico Granata { 1345160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1359128ee2fSEnrico Granata lldb::ByteOrder value = eByteOrderInvalid; 1369128ee2fSEnrico Granata if (m_opaque_sp.get()) 1379128ee2fSEnrico Granata value = m_opaque_sp->GetByteOrder(); 1389128ee2fSEnrico Granata if (log) 1399128ee2fSEnrico Granata log->Printf ("SBData::GetByteOrder () => " 1409128ee2fSEnrico Granata "(%i)", value); 1419128ee2fSEnrico Granata return value; 1429128ee2fSEnrico Granata } 1439128ee2fSEnrico Granata 1440f28986aSGreg Clayton void 1450f28986aSGreg Clayton SBData::SetByteOrder (lldb::ByteOrder endian) 1460f28986aSGreg Clayton { 1475160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1480f28986aSGreg Clayton if (m_opaque_sp.get()) 1490f28986aSGreg Clayton m_opaque_sp->SetByteOrder(endian); 1500f28986aSGreg Clayton if (log) 1510f28986aSGreg Clayton log->Printf ("SBData::GetByteOrder (%i)", endian); 1520f28986aSGreg Clayton } 1530f28986aSGreg Clayton 1540f28986aSGreg Clayton 1559128ee2fSEnrico Granata float 156c7bece56SGreg Clayton SBData::GetFloat (lldb::SBError& error, lldb::offset_t offset) 1579128ee2fSEnrico Granata { 1585160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1599128ee2fSEnrico Granata float value = 0; 1609128ee2fSEnrico Granata if (!m_opaque_sp.get()) 1619128ee2fSEnrico Granata { 1629128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 1639128ee2fSEnrico Granata } 1649128ee2fSEnrico Granata else 1659128ee2fSEnrico Granata { 1669128ee2fSEnrico Granata uint32_t old_offset = offset; 1679128ee2fSEnrico Granata value = m_opaque_sp->GetFloat(&offset); 1689128ee2fSEnrico Granata if (offset == old_offset) 1699128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1709128ee2fSEnrico Granata } 1719128ee2fSEnrico Granata if (log) 172324a1036SSaleem Abdulrasool log->Printf ("SBData::GetFloat (error=%p,offset=%" PRIu64 ") => (%f)", 173324a1036SSaleem Abdulrasool static_cast<void*>(error.get()), offset, value); 1749128ee2fSEnrico Granata return value; 1759128ee2fSEnrico Granata } 1769128ee2fSEnrico Granata 1779128ee2fSEnrico Granata double 178c7bece56SGreg Clayton SBData::GetDouble (lldb::SBError& error, lldb::offset_t offset) 1799128ee2fSEnrico Granata { 1805160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 1819128ee2fSEnrico Granata double value = 0; 1829128ee2fSEnrico Granata if (!m_opaque_sp.get()) 1839128ee2fSEnrico Granata { 1849128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 1859128ee2fSEnrico Granata } 1869128ee2fSEnrico Granata else 1879128ee2fSEnrico Granata { 1889128ee2fSEnrico Granata uint32_t old_offset = offset; 1899128ee2fSEnrico Granata value = m_opaque_sp->GetDouble(&offset); 1909128ee2fSEnrico Granata if (offset == old_offset) 1919128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 1929128ee2fSEnrico Granata } 1939128ee2fSEnrico Granata if (log) 194c7bece56SGreg Clayton log->Printf ("SBData::GetDouble (error=%p,offset=%" PRIu64 ") => " 195324a1036SSaleem Abdulrasool "(%f)", static_cast<void*>(error.get()), offset, value); 1969128ee2fSEnrico Granata return value; 1979128ee2fSEnrico Granata } 1989128ee2fSEnrico Granata 1999128ee2fSEnrico Granata long double 200c7bece56SGreg Clayton SBData::GetLongDouble (lldb::SBError& error, lldb::offset_t offset) 2019128ee2fSEnrico Granata { 2025160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2039128ee2fSEnrico Granata long double value = 0; 2049128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2059128ee2fSEnrico Granata { 2069128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2079128ee2fSEnrico Granata } 2089128ee2fSEnrico Granata else 2099128ee2fSEnrico Granata { 2109128ee2fSEnrico Granata uint32_t old_offset = offset; 2119128ee2fSEnrico Granata value = m_opaque_sp->GetLongDouble(&offset); 2129128ee2fSEnrico Granata if (offset == old_offset) 2139128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2149128ee2fSEnrico Granata } 2159128ee2fSEnrico Granata if (log) 216c7bece56SGreg Clayton log->Printf ("SBData::GetLongDouble (error=%p,offset=%" PRIu64 ") => " 217324a1036SSaleem Abdulrasool "(%Lf)", static_cast<void*>(error.get()), offset, value); 2189128ee2fSEnrico Granata return value; 2199128ee2fSEnrico Granata } 2209128ee2fSEnrico Granata 2219128ee2fSEnrico Granata lldb::addr_t 222c7bece56SGreg Clayton SBData::GetAddress (lldb::SBError& error, lldb::offset_t offset) 2239128ee2fSEnrico Granata { 2245160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2259128ee2fSEnrico Granata lldb::addr_t value = 0; 2269128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2279128ee2fSEnrico Granata { 2289128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2299128ee2fSEnrico Granata } 2309128ee2fSEnrico Granata else 2319128ee2fSEnrico Granata { 2329128ee2fSEnrico Granata uint32_t old_offset = offset; 2339128ee2fSEnrico Granata value = m_opaque_sp->GetAddress(&offset); 2349128ee2fSEnrico Granata if (offset == old_offset) 2359128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2369128ee2fSEnrico Granata } 2379128ee2fSEnrico Granata if (log) 238c7bece56SGreg Clayton log->Printf ("SBData::GetAddress (error=%p,offset=%" PRIu64 ") => " 239324a1036SSaleem Abdulrasool "(%p)", static_cast<void*>(error.get()), offset, 240324a1036SSaleem Abdulrasool reinterpret_cast<void*>(value)); 2419128ee2fSEnrico Granata return value; 2429128ee2fSEnrico Granata } 2439128ee2fSEnrico Granata 2449128ee2fSEnrico Granata uint8_t 245c7bece56SGreg Clayton SBData::GetUnsignedInt8 (lldb::SBError& error, lldb::offset_t offset) 2469128ee2fSEnrico Granata { 2475160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2489128ee2fSEnrico Granata uint8_t value = 0; 2499128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2509128ee2fSEnrico Granata { 2519128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2529128ee2fSEnrico Granata } 2539128ee2fSEnrico Granata else 2549128ee2fSEnrico Granata { 2559128ee2fSEnrico Granata uint32_t old_offset = offset; 2569128ee2fSEnrico Granata value = m_opaque_sp->GetU8(&offset); 2579128ee2fSEnrico Granata if (offset == old_offset) 2589128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2599128ee2fSEnrico Granata } 2609128ee2fSEnrico Granata if (log) 261c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt8 (error=%p,offset=%" PRIu64 ") => " 262324a1036SSaleem Abdulrasool "(%c)", static_cast<void*>(error.get()), offset, value); 2639128ee2fSEnrico Granata return value; 2649128ee2fSEnrico Granata } 2659128ee2fSEnrico Granata 2669128ee2fSEnrico Granata uint16_t 267c7bece56SGreg Clayton SBData::GetUnsignedInt16 (lldb::SBError& error, lldb::offset_t offset) 2689128ee2fSEnrico Granata { 2695160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2709128ee2fSEnrico Granata uint16_t value = 0; 2719128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2729128ee2fSEnrico Granata { 2739128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2749128ee2fSEnrico Granata } 2759128ee2fSEnrico Granata else 2769128ee2fSEnrico Granata { 2779128ee2fSEnrico Granata uint32_t old_offset = offset; 2789128ee2fSEnrico Granata value = m_opaque_sp->GetU16(&offset); 2799128ee2fSEnrico Granata if (offset == old_offset) 2809128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2819128ee2fSEnrico Granata } 2829128ee2fSEnrico Granata if (log) 283c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt16 (error=%p,offset=%" PRIu64 ") => " 284324a1036SSaleem Abdulrasool "(%hd)", static_cast<void*>(error.get()), offset, value); 2859128ee2fSEnrico Granata return value; 2869128ee2fSEnrico Granata } 2879128ee2fSEnrico Granata 2889128ee2fSEnrico Granata uint32_t 289c7bece56SGreg Clayton SBData::GetUnsignedInt32 (lldb::SBError& error, lldb::offset_t offset) 2909128ee2fSEnrico Granata { 2915160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2929128ee2fSEnrico Granata uint32_t value = 0; 2939128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2949128ee2fSEnrico Granata { 2959128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2969128ee2fSEnrico Granata } 2979128ee2fSEnrico Granata else 2989128ee2fSEnrico Granata { 2999128ee2fSEnrico Granata uint32_t old_offset = offset; 3009128ee2fSEnrico Granata value = m_opaque_sp->GetU32(&offset); 3019128ee2fSEnrico Granata if (offset == old_offset) 3029128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3039128ee2fSEnrico Granata } 3049128ee2fSEnrico Granata if (log) 305c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt32 (error=%p,offset=%" PRIu64 ") => " 306324a1036SSaleem Abdulrasool "(%d)", static_cast<void*>(error.get()), offset, value); 3079128ee2fSEnrico Granata return value; 3089128ee2fSEnrico Granata } 3099128ee2fSEnrico Granata 3109128ee2fSEnrico Granata uint64_t 311c7bece56SGreg Clayton SBData::GetUnsignedInt64 (lldb::SBError& error, lldb::offset_t offset) 3129128ee2fSEnrico Granata { 3135160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3149128ee2fSEnrico Granata uint64_t value = 0; 3159128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3169128ee2fSEnrico Granata { 3179128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3189128ee2fSEnrico Granata } 3199128ee2fSEnrico Granata else 3209128ee2fSEnrico Granata { 3219128ee2fSEnrico Granata uint32_t old_offset = offset; 3229128ee2fSEnrico Granata value = m_opaque_sp->GetU64(&offset); 3239128ee2fSEnrico Granata if (offset == old_offset) 3249128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3259128ee2fSEnrico Granata } 3269128ee2fSEnrico Granata if (log) 327c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt64 (error=%p,offset=%" PRIu64 ") => " 328324a1036SSaleem Abdulrasool "(%" PRId64 ")", static_cast<void*>(error.get()), offset, 329324a1036SSaleem Abdulrasool value); 3309128ee2fSEnrico Granata return value; 3319128ee2fSEnrico Granata } 3329128ee2fSEnrico Granata 3339128ee2fSEnrico Granata int8_t 334c7bece56SGreg Clayton SBData::GetSignedInt8 (lldb::SBError& error, lldb::offset_t offset) 3359128ee2fSEnrico Granata { 3365160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3379128ee2fSEnrico Granata int8_t value = 0; 3389128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3399128ee2fSEnrico Granata { 3409128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3419128ee2fSEnrico Granata } 3429128ee2fSEnrico Granata else 3439128ee2fSEnrico Granata { 3449128ee2fSEnrico Granata uint32_t old_offset = offset; 3459128ee2fSEnrico Granata value = (int8_t)m_opaque_sp->GetMaxS64(&offset, 1); 3469128ee2fSEnrico Granata if (offset == old_offset) 3479128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3489128ee2fSEnrico Granata } 3499128ee2fSEnrico Granata if (log) 350c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt8 (error=%p,offset=%" PRIu64 ") => " 351324a1036SSaleem Abdulrasool "(%c)", static_cast<void*>(error.get()), offset, value); 3529128ee2fSEnrico Granata return value; 3539128ee2fSEnrico Granata } 3549128ee2fSEnrico Granata 3559128ee2fSEnrico Granata int16_t 356c7bece56SGreg Clayton SBData::GetSignedInt16 (lldb::SBError& error, lldb::offset_t offset) 3579128ee2fSEnrico Granata { 3585160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3599128ee2fSEnrico Granata int16_t value = 0; 3609128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3619128ee2fSEnrico Granata { 3629128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3639128ee2fSEnrico Granata } 3649128ee2fSEnrico Granata else 3659128ee2fSEnrico Granata { 3669128ee2fSEnrico Granata uint32_t old_offset = offset; 3679128ee2fSEnrico Granata value = (int16_t)m_opaque_sp->GetMaxS64(&offset, 2); 3689128ee2fSEnrico Granata if (offset == old_offset) 3699128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3709128ee2fSEnrico Granata } 3719128ee2fSEnrico Granata if (log) 372c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt16 (error=%p,offset=%" PRIu64 ") => " 373324a1036SSaleem Abdulrasool "(%hd)", static_cast<void*>(error.get()), offset, value); 3749128ee2fSEnrico Granata return value; 3759128ee2fSEnrico Granata } 3769128ee2fSEnrico Granata 3779128ee2fSEnrico Granata int32_t 378c7bece56SGreg Clayton SBData::GetSignedInt32 (lldb::SBError& error, lldb::offset_t offset) 3799128ee2fSEnrico Granata { 3805160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3819128ee2fSEnrico Granata int32_t value = 0; 3829128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3839128ee2fSEnrico Granata { 3849128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3859128ee2fSEnrico Granata } 3869128ee2fSEnrico Granata else 3879128ee2fSEnrico Granata { 3889128ee2fSEnrico Granata uint32_t old_offset = offset; 3899128ee2fSEnrico Granata value = (int32_t)m_opaque_sp->GetMaxS64(&offset, 4); 3909128ee2fSEnrico Granata if (offset == old_offset) 3919128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3929128ee2fSEnrico Granata } 3939128ee2fSEnrico Granata if (log) 394c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt32 (error=%p,offset=%" PRIu64 ") => " 395324a1036SSaleem Abdulrasool "(%d)", static_cast<void*>(error.get()), offset, value); 3969128ee2fSEnrico Granata return value; 3979128ee2fSEnrico Granata } 3989128ee2fSEnrico Granata 3999128ee2fSEnrico Granata int64_t 400c7bece56SGreg Clayton SBData::GetSignedInt64 (lldb::SBError& error, lldb::offset_t offset) 4019128ee2fSEnrico Granata { 4025160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4039128ee2fSEnrico Granata int64_t value = 0; 4049128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4059128ee2fSEnrico Granata { 4069128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4079128ee2fSEnrico Granata } 4089128ee2fSEnrico Granata else 4099128ee2fSEnrico Granata { 4109128ee2fSEnrico Granata uint32_t old_offset = offset; 4119128ee2fSEnrico Granata value = (int64_t)m_opaque_sp->GetMaxS64(&offset, 8); 4129128ee2fSEnrico Granata if (offset == old_offset) 4139128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4149128ee2fSEnrico Granata } 4159128ee2fSEnrico Granata if (log) 416c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt64 (error=%p,offset=%" PRIu64 ") => " 417324a1036SSaleem Abdulrasool "(%" PRId64 ")", static_cast<void*>(error.get()), offset, 418324a1036SSaleem Abdulrasool value); 4199128ee2fSEnrico Granata return value; 4209128ee2fSEnrico Granata } 4219128ee2fSEnrico Granata 4229128ee2fSEnrico Granata const char* 423c7bece56SGreg Clayton SBData::GetString (lldb::SBError& error, lldb::offset_t offset) 4249128ee2fSEnrico Granata { 4255160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4269128ee2fSEnrico Granata const char* value = 0; 4279128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4289128ee2fSEnrico Granata { 4299128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4309128ee2fSEnrico Granata } 4319128ee2fSEnrico Granata else 4329128ee2fSEnrico Granata { 4339128ee2fSEnrico Granata uint32_t old_offset = offset; 4349128ee2fSEnrico Granata value = m_opaque_sp->GetCStr(&offset); 4359128ee2fSEnrico Granata if (offset == old_offset || (value == NULL)) 4369128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4379128ee2fSEnrico Granata } 4389128ee2fSEnrico Granata if (log) 439324a1036SSaleem Abdulrasool log->Printf ("SBData::GetString (error=%p,offset=%" PRIu64 ") => (%p)", 440324a1036SSaleem Abdulrasool static_cast<void*>(error.get()), offset, 441324a1036SSaleem Abdulrasool static_cast<const void*>(value)); 4429128ee2fSEnrico Granata return value; 4439128ee2fSEnrico Granata } 4449128ee2fSEnrico Granata 4459128ee2fSEnrico Granata bool 446d9dc52dcSGreg Clayton SBData::GetDescription (lldb::SBStream &description, lldb::addr_t base_addr) 4479128ee2fSEnrico Granata { 448da7bc7d0SGreg Clayton Stream &strm = description.ref(); 449da7bc7d0SGreg Clayton 4509128ee2fSEnrico Granata if (m_opaque_sp) 4519128ee2fSEnrico Granata { 452da7bc7d0SGreg Clayton m_opaque_sp->Dump (&strm, 4539128ee2fSEnrico Granata 0, 4549128ee2fSEnrico Granata lldb::eFormatBytesWithASCII, 4559128ee2fSEnrico Granata 1, 4569128ee2fSEnrico Granata m_opaque_sp->GetByteSize(), 4579128ee2fSEnrico Granata 16, 458d9dc52dcSGreg Clayton base_addr, 4599128ee2fSEnrico Granata 0, 4609128ee2fSEnrico Granata 0); 4619128ee2fSEnrico Granata } 4629128ee2fSEnrico Granata else 463da7bc7d0SGreg Clayton strm.PutCString ("No value"); 4649128ee2fSEnrico Granata 4659128ee2fSEnrico Granata return true; 4669128ee2fSEnrico Granata } 4679128ee2fSEnrico Granata 4689128ee2fSEnrico Granata size_t 4699128ee2fSEnrico Granata SBData::ReadRawData (lldb::SBError& error, 470c7bece56SGreg Clayton lldb::offset_t offset, 4719128ee2fSEnrico Granata void *buf, 4729128ee2fSEnrico Granata size_t size) 4739128ee2fSEnrico Granata { 4745160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4759128ee2fSEnrico Granata void* ok = NULL; 4769128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4779128ee2fSEnrico Granata { 4789128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4799128ee2fSEnrico Granata } 4809128ee2fSEnrico Granata else 4819128ee2fSEnrico Granata { 4829128ee2fSEnrico Granata uint32_t old_offset = offset; 4839128ee2fSEnrico Granata ok = m_opaque_sp->GetU8(&offset, buf, size); 4849128ee2fSEnrico Granata if ((offset == old_offset) || (ok == NULL)) 4859128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4869128ee2fSEnrico Granata } 4879128ee2fSEnrico Granata if (log) 4886fea17e8SGreg Clayton log->Printf("SBData::ReadRawData (error=%p,offset=%" PRIu64 ",buf=%p,size=%" PRIu64 ") => " 489324a1036SSaleem Abdulrasool "(%p)", static_cast<void*>(error.get()), offset, 490324a1036SSaleem Abdulrasool static_cast<void*>(buf), static_cast<uint64_t>(size), 491324a1036SSaleem Abdulrasool static_cast<void*>(ok)); 4929128ee2fSEnrico Granata return ok ? size : 0; 4939128ee2fSEnrico Granata } 4949128ee2fSEnrico Granata 4959128ee2fSEnrico Granata void 4969128ee2fSEnrico Granata SBData::SetData (lldb::SBError& error, 4979128ee2fSEnrico Granata const void *buf, 4989128ee2fSEnrico Granata size_t size, 4999128ee2fSEnrico Granata lldb::ByteOrder endian, 5009128ee2fSEnrico Granata uint8_t addr_size) 5019128ee2fSEnrico Granata { 5025160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 5039128ee2fSEnrico Granata if (!m_opaque_sp.get()) 5049128ee2fSEnrico Granata m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); 5059128ee2fSEnrico Granata else 5069128ee2fSEnrico Granata m_opaque_sp->SetData(buf, size, endian); 5079128ee2fSEnrico Granata if (log) 5086fea17e8SGreg Clayton log->Printf("SBData::SetData (error=%p,buf=%p,size=%" PRIu64 ",endian=%d,addr_size=%c) => " 509324a1036SSaleem Abdulrasool "(%p)", static_cast<void*>(error.get()), 510324a1036SSaleem Abdulrasool static_cast<const void*>(buf), static_cast<uint64_t>(size), 511324a1036SSaleem Abdulrasool endian, addr_size, static_cast<void*>(m_opaque_sp.get())); 5129128ee2fSEnrico Granata } 5139128ee2fSEnrico Granata 5149128ee2fSEnrico Granata bool 5159128ee2fSEnrico Granata SBData::Append (const SBData& rhs) 5169128ee2fSEnrico Granata { 5175160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 5189128ee2fSEnrico Granata bool value = false; 5199128ee2fSEnrico Granata if (m_opaque_sp.get() && rhs.m_opaque_sp.get()) 5209128ee2fSEnrico Granata value = m_opaque_sp.get()->Append(*rhs.m_opaque_sp); 5219128ee2fSEnrico Granata if (log) 522324a1036SSaleem Abdulrasool log->Printf ("SBData::Append (rhs=%p) => (%s)", 523324a1036SSaleem Abdulrasool static_cast<void*>(rhs.get()), value ? "true" : "false"); 5249128ee2fSEnrico Granata return value; 5259128ee2fSEnrico Granata } 5260f28986aSGreg Clayton 5270f28986aSGreg Clayton lldb::SBData 5280f28986aSGreg Clayton SBData::CreateDataFromCString (lldb::ByteOrder endian, uint32_t addr_byte_size, const char* data) 5290f28986aSGreg Clayton { 5300f28986aSGreg Clayton if (!data || !data[0]) 5310f28986aSGreg Clayton return SBData(); 5320f28986aSGreg Clayton 5330f28986aSGreg Clayton uint32_t data_len = strlen(data); 5340f28986aSGreg Clayton 5350f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 5360f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5370f28986aSGreg Clayton 5380f28986aSGreg Clayton SBData ret(data_sp); 5390f28986aSGreg Clayton 5400f28986aSGreg Clayton return ret; 5410f28986aSGreg Clayton } 5420f28986aSGreg Clayton 5430f28986aSGreg Clayton lldb::SBData 5440f28986aSGreg Clayton SBData::CreateDataFromUInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint64_t* array, size_t array_len) 5450f28986aSGreg Clayton { 5460f28986aSGreg Clayton if (!array || array_len == 0) 5470f28986aSGreg Clayton return SBData(); 5480f28986aSGreg Clayton 5490f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint64_t); 5500f28986aSGreg Clayton 5510f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5520f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5530f28986aSGreg Clayton 5540f28986aSGreg Clayton SBData ret(data_sp); 5550f28986aSGreg Clayton 5560f28986aSGreg Clayton return ret; 5570f28986aSGreg Clayton } 5580f28986aSGreg Clayton 5590f28986aSGreg Clayton lldb::SBData 5600f28986aSGreg Clayton SBData::CreateDataFromUInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint32_t* array, size_t array_len) 5610f28986aSGreg Clayton { 5620f28986aSGreg Clayton if (!array || array_len == 0) 5630f28986aSGreg Clayton return SBData(); 5640f28986aSGreg Clayton 5650f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint32_t); 5660f28986aSGreg Clayton 5670f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5680f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5690f28986aSGreg Clayton 5700f28986aSGreg Clayton SBData ret(data_sp); 5710f28986aSGreg Clayton 5720f28986aSGreg Clayton return ret; 5730f28986aSGreg Clayton } 5740f28986aSGreg Clayton 5750f28986aSGreg Clayton lldb::SBData 5760f28986aSGreg Clayton SBData::CreateDataFromSInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int64_t* array, size_t array_len) 5770f28986aSGreg Clayton { 5780f28986aSGreg Clayton if (!array || array_len == 0) 5790f28986aSGreg Clayton return SBData(); 5800f28986aSGreg Clayton 5810f28986aSGreg Clayton size_t data_len = array_len * sizeof(int64_t); 5820f28986aSGreg Clayton 5830f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5840f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5850f28986aSGreg Clayton 5860f28986aSGreg Clayton SBData ret(data_sp); 5870f28986aSGreg Clayton 5880f28986aSGreg Clayton return ret; 5890f28986aSGreg Clayton } 5900f28986aSGreg Clayton 5910f28986aSGreg Clayton lldb::SBData 5920f28986aSGreg Clayton SBData::CreateDataFromSInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int32_t* array, size_t array_len) 5930f28986aSGreg Clayton { 5940f28986aSGreg Clayton if (!array || array_len == 0) 5950f28986aSGreg Clayton return SBData(); 5960f28986aSGreg Clayton 5970f28986aSGreg Clayton size_t data_len = array_len * sizeof(int32_t); 5980f28986aSGreg Clayton 5990f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6000f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 6010f28986aSGreg Clayton 6020f28986aSGreg Clayton SBData ret(data_sp); 6030f28986aSGreg Clayton 6040f28986aSGreg Clayton return ret; 6050f28986aSGreg Clayton } 6060f28986aSGreg Clayton 6070f28986aSGreg Clayton lldb::SBData 6080f28986aSGreg Clayton SBData::CreateDataFromDoubleArray (lldb::ByteOrder endian, uint32_t addr_byte_size, double* array, size_t array_len) 6090f28986aSGreg Clayton { 6100f28986aSGreg Clayton if (!array || array_len == 0) 6110f28986aSGreg Clayton return SBData(); 6120f28986aSGreg Clayton 6130f28986aSGreg Clayton size_t data_len = array_len * sizeof(double); 6140f28986aSGreg Clayton 6150f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6160f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 6170f28986aSGreg Clayton 6180f28986aSGreg Clayton SBData ret(data_sp); 6190f28986aSGreg Clayton 6200f28986aSGreg Clayton return ret; 6210f28986aSGreg Clayton } 6220f28986aSGreg Clayton 6230f28986aSGreg Clayton bool 6240f28986aSGreg Clayton SBData::SetDataFromCString (const char* data) 6250f28986aSGreg Clayton { 6265160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6270f28986aSGreg Clayton 6280f28986aSGreg Clayton if (!data) 6290f28986aSGreg Clayton { 6300f28986aSGreg Clayton if (log) 631324a1036SSaleem Abdulrasool log->Printf ("SBData::SetDataFromCString (data=%p) => false", 632324a1036SSaleem Abdulrasool static_cast<const void*>(data)); 6330f28986aSGreg Clayton return false; 6340f28986aSGreg Clayton } 6350f28986aSGreg Clayton 6360f28986aSGreg Clayton size_t data_len = strlen(data); 6370f28986aSGreg Clayton 6380f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 6390f28986aSGreg Clayton 6400f28986aSGreg Clayton if (!m_opaque_sp.get()) 6410f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 6420f28986aSGreg Clayton else 6430f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6440f28986aSGreg Clayton 6450f28986aSGreg Clayton if (log) 646324a1036SSaleem Abdulrasool log->Printf ("SBData::SetDataFromCString (data=%p) => true", 647324a1036SSaleem Abdulrasool static_cast<const void*>(data)); 6480f28986aSGreg Clayton 6490f28986aSGreg Clayton return true; 6500f28986aSGreg Clayton } 6510f28986aSGreg Clayton 6520f28986aSGreg Clayton bool 6530f28986aSGreg Clayton SBData::SetDataFromUInt64Array (uint64_t* array, size_t array_len) 6540f28986aSGreg Clayton { 6555160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6560f28986aSGreg Clayton 6570f28986aSGreg Clayton if (!array || array_len == 0) 6580f28986aSGreg Clayton { 6590f28986aSGreg Clayton if (log) 6606fea17e8SGreg Clayton log->Printf("SBData::SetDataFromUInt64Array (array=%p, array_len = %" PRIu64 ") => " 661324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 662324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 6630f28986aSGreg Clayton return false; 6640f28986aSGreg Clayton } 6650f28986aSGreg Clayton 6660f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint64_t); 6670f28986aSGreg Clayton 6680f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6690f28986aSGreg Clayton 6700f28986aSGreg Clayton if (!m_opaque_sp.get()) 6710f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 6720f28986aSGreg Clayton else 6730f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6740f28986aSGreg Clayton 6750f28986aSGreg Clayton if (log) 6766fea17e8SGreg Clayton log->Printf("SBData::SetDataFromUInt64Array (array=%p, array_len = %" PRIu64 ") => " 677324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 678324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 6790f28986aSGreg Clayton 6800f28986aSGreg Clayton return true; 6810f28986aSGreg Clayton } 6820f28986aSGreg Clayton 6830f28986aSGreg Clayton bool 6840f28986aSGreg Clayton SBData::SetDataFromUInt32Array (uint32_t* array, size_t array_len) 6850f28986aSGreg Clayton { 6865160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6870f28986aSGreg Clayton 6880f28986aSGreg Clayton if (!array || array_len == 0) 6890f28986aSGreg Clayton { 6900f28986aSGreg Clayton if (log) 6916fea17e8SGreg Clayton log->Printf("SBData::SetDataFromUInt32Array (array=%p, array_len = %" PRIu64 ") => " 692324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 693324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 6940f28986aSGreg Clayton return false; 6950f28986aSGreg Clayton } 6960f28986aSGreg Clayton 6970f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint32_t); 6980f28986aSGreg Clayton 6990f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7000f28986aSGreg Clayton 7010f28986aSGreg Clayton if (!m_opaque_sp.get()) 7020f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7030f28986aSGreg Clayton else 7040f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7050f28986aSGreg Clayton 7060f28986aSGreg Clayton if (log) 7076fea17e8SGreg Clayton log->Printf("SBData::SetDataFromUInt32Array (array=%p, array_len = %" PRIu64 ") => " 708324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 709324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7100f28986aSGreg Clayton 7110f28986aSGreg Clayton return true; 7120f28986aSGreg Clayton } 7130f28986aSGreg Clayton 7140f28986aSGreg Clayton bool 7150f28986aSGreg Clayton SBData::SetDataFromSInt64Array (int64_t* array, size_t array_len) 7160f28986aSGreg Clayton { 7175160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7180f28986aSGreg Clayton 7190f28986aSGreg Clayton if (!array || array_len == 0) 7200f28986aSGreg Clayton { 7210f28986aSGreg Clayton if (log) 7226fea17e8SGreg Clayton log->Printf("SBData::SetDataFromSInt64Array (array=%p, array_len = %" PRIu64 ") => " 723324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 724324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7250f28986aSGreg Clayton return false; 7260f28986aSGreg Clayton } 7270f28986aSGreg Clayton 7280f28986aSGreg Clayton size_t data_len = array_len * sizeof(int64_t); 7290f28986aSGreg Clayton 7300f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7310f28986aSGreg Clayton 7320f28986aSGreg Clayton if (!m_opaque_sp.get()) 7330f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7340f28986aSGreg Clayton else 7350f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7360f28986aSGreg Clayton 7370f28986aSGreg Clayton if (log) 7386fea17e8SGreg Clayton log->Printf("SBData::SetDataFromSInt64Array (array=%p, array_len = %" PRIu64 ") => " 739324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 740324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7410f28986aSGreg Clayton 7420f28986aSGreg Clayton return true; 7430f28986aSGreg Clayton } 7440f28986aSGreg Clayton 7450f28986aSGreg Clayton bool 7460f28986aSGreg Clayton SBData::SetDataFromSInt32Array (int32_t* array, size_t array_len) 7470f28986aSGreg Clayton { 7485160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7490f28986aSGreg Clayton 7500f28986aSGreg Clayton if (!array || array_len == 0) 7510f28986aSGreg Clayton { 7520f28986aSGreg Clayton if (log) 7536fea17e8SGreg Clayton log->Printf("SBData::SetDataFromSInt32Array (array=%p, array_len = %" PRIu64 ") => " 754324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 755324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7560f28986aSGreg Clayton return false; 7570f28986aSGreg Clayton } 7580f28986aSGreg Clayton 7590f28986aSGreg Clayton size_t data_len = array_len * sizeof(int32_t); 7600f28986aSGreg Clayton 7610f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7620f28986aSGreg Clayton 7630f28986aSGreg Clayton if (!m_opaque_sp.get()) 7640f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7650f28986aSGreg Clayton else 7660f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7670f28986aSGreg Clayton 7680f28986aSGreg Clayton if (log) 7696fea17e8SGreg Clayton log->Printf("SBData::SetDataFromSInt32Array (array=%p, array_len = %" PRIu64 ") => " 770324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 771324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7720f28986aSGreg Clayton 7730f28986aSGreg Clayton return true; 7740f28986aSGreg Clayton } 7750f28986aSGreg Clayton 7760f28986aSGreg Clayton bool 7770f28986aSGreg Clayton SBData::SetDataFromDoubleArray (double* array, size_t array_len) 7780f28986aSGreg Clayton { 7795160ce5cSGreg Clayton Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7800f28986aSGreg Clayton 7810f28986aSGreg Clayton if (!array || array_len == 0) 7820f28986aSGreg Clayton { 7830f28986aSGreg Clayton if (log) 7846fea17e8SGreg Clayton log->Printf("SBData::SetDataFromDoubleArray (array=%p, array_len = %" PRIu64 ") => " 785324a1036SSaleem Abdulrasool "false", static_cast<void*>(array), 786324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 7870f28986aSGreg Clayton return false; 7880f28986aSGreg Clayton } 7890f28986aSGreg Clayton 7900f28986aSGreg Clayton size_t data_len = array_len * sizeof(double); 7910f28986aSGreg Clayton 7920f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7930f28986aSGreg Clayton 7940f28986aSGreg Clayton if (!m_opaque_sp.get()) 7950f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7960f28986aSGreg Clayton else 7970f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7980f28986aSGreg Clayton 7990f28986aSGreg Clayton if (log) 8006fea17e8SGreg Clayton log->Printf("SBData::SetDataFromDoubleArray (array=%p, array_len = %" PRIu64 ") => " 801324a1036SSaleem Abdulrasool "true", static_cast<void*>(array), 802324a1036SSaleem Abdulrasool static_cast<uint64_t>(array_len)); 8030f28986aSGreg Clayton 8040f28986aSGreg Clayton return true; 8050f28986aSGreg Clayton } 806