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 { 899128ee2fSEnrico Granata LogSP 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 { 1020f28986aSGreg Clayton LogSP 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 { 1199128ee2fSEnrico Granata LogSP 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 () => " 125fd54b368SJason Molenda "(%lu)", value); 1269128ee2fSEnrico Granata return value; 1279128ee2fSEnrico Granata } 1289128ee2fSEnrico Granata 1299128ee2fSEnrico Granata lldb::ByteOrder 1309128ee2fSEnrico Granata SBData::GetByteOrder () 1319128ee2fSEnrico Granata { 1329128ee2fSEnrico Granata LogSP 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 { 1450f28986aSGreg Clayton LogSP 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 154*c7bece56SGreg Clayton SBData::GetFloat (lldb::SBError& error, lldb::offset_t offset) 1559128ee2fSEnrico Granata { 1569128ee2fSEnrico Granata LogSP 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*c7bece56SGreg Clayton log->Printf ("SBData::GetFloat (error=%p,offset=%" PRIu64 ") => " 1719128ee2fSEnrico Granata "(%f)", error.get(), offset, value); 1729128ee2fSEnrico Granata return value; 1739128ee2fSEnrico Granata } 1749128ee2fSEnrico Granata 1759128ee2fSEnrico Granata double 176*c7bece56SGreg Clayton SBData::GetDouble (lldb::SBError& error, lldb::offset_t offset) 1779128ee2fSEnrico Granata { 1789128ee2fSEnrico Granata LogSP 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) 192*c7bece56SGreg Clayton log->Printf ("SBData::GetDouble (error=%p,offset=%" PRIu64 ") => " 1939128ee2fSEnrico Granata "(%f)", error.get(), offset, value); 1949128ee2fSEnrico Granata return value; 1959128ee2fSEnrico Granata } 1969128ee2fSEnrico Granata 1979128ee2fSEnrico Granata long double 198*c7bece56SGreg Clayton SBData::GetLongDouble (lldb::SBError& error, lldb::offset_t offset) 1999128ee2fSEnrico Granata { 2009128ee2fSEnrico Granata LogSP 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) 214*c7bece56SGreg Clayton log->Printf ("SBData::GetLongDouble (error=%p,offset=%" PRIu64 ") => " 215fd54b368SJason Molenda "(%Lf)", error.get(), offset, value); 2169128ee2fSEnrico Granata return value; 2179128ee2fSEnrico Granata } 2189128ee2fSEnrico Granata 2199128ee2fSEnrico Granata lldb::addr_t 220*c7bece56SGreg Clayton SBData::GetAddress (lldb::SBError& error, lldb::offset_t offset) 2219128ee2fSEnrico Granata { 2229128ee2fSEnrico Granata LogSP 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) 236*c7bece56SGreg Clayton log->Printf ("SBData::GetAddress (error=%p,offset=%" PRIu64 ") => " 2379128ee2fSEnrico Granata "(%p)", error.get(), offset, (void*)value); 2389128ee2fSEnrico Granata return value; 2399128ee2fSEnrico Granata } 2409128ee2fSEnrico Granata 2419128ee2fSEnrico Granata uint8_t 242*c7bece56SGreg Clayton SBData::GetUnsignedInt8 (lldb::SBError& error, lldb::offset_t offset) 2439128ee2fSEnrico Granata { 2449128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2459128ee2fSEnrico Granata uint8_t value = 0; 2469128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2479128ee2fSEnrico Granata { 2489128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2499128ee2fSEnrico Granata } 2509128ee2fSEnrico Granata else 2519128ee2fSEnrico Granata { 2529128ee2fSEnrico Granata uint32_t old_offset = offset; 2539128ee2fSEnrico Granata value = m_opaque_sp->GetU8(&offset); 2549128ee2fSEnrico Granata if (offset == old_offset) 2559128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2569128ee2fSEnrico Granata } 2579128ee2fSEnrico Granata if (log) 258*c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt8 (error=%p,offset=%" PRIu64 ") => " 2599128ee2fSEnrico Granata "(%c)", error.get(), offset, value); 2609128ee2fSEnrico Granata return value; 2619128ee2fSEnrico Granata } 2629128ee2fSEnrico Granata 2639128ee2fSEnrico Granata uint16_t 264*c7bece56SGreg Clayton SBData::GetUnsignedInt16 (lldb::SBError& error, lldb::offset_t offset) 2659128ee2fSEnrico Granata { 2669128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2679128ee2fSEnrico Granata uint16_t value = 0; 2689128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2699128ee2fSEnrico Granata { 2709128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2719128ee2fSEnrico Granata } 2729128ee2fSEnrico Granata else 2739128ee2fSEnrico Granata { 2749128ee2fSEnrico Granata uint32_t old_offset = offset; 2759128ee2fSEnrico Granata value = m_opaque_sp->GetU16(&offset); 2769128ee2fSEnrico Granata if (offset == old_offset) 2779128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 2789128ee2fSEnrico Granata } 2799128ee2fSEnrico Granata if (log) 280*c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt16 (error=%p,offset=%" PRIu64 ") => " 2819128ee2fSEnrico Granata "(%hd)", error.get(), offset, value); 2829128ee2fSEnrico Granata return value; 2839128ee2fSEnrico Granata } 2849128ee2fSEnrico Granata 2859128ee2fSEnrico Granata uint32_t 286*c7bece56SGreg Clayton SBData::GetUnsignedInt32 (lldb::SBError& error, lldb::offset_t offset) 2879128ee2fSEnrico Granata { 2889128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 2899128ee2fSEnrico Granata uint32_t value = 0; 2909128ee2fSEnrico Granata if (!m_opaque_sp.get()) 2919128ee2fSEnrico Granata { 2929128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 2939128ee2fSEnrico Granata } 2949128ee2fSEnrico Granata else 2959128ee2fSEnrico Granata { 2969128ee2fSEnrico Granata uint32_t old_offset = offset; 2979128ee2fSEnrico Granata value = m_opaque_sp->GetU32(&offset); 2989128ee2fSEnrico Granata if (offset == old_offset) 2999128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3009128ee2fSEnrico Granata } 3019128ee2fSEnrico Granata if (log) 302*c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt32 (error=%p,offset=%" PRIu64 ") => " 3039128ee2fSEnrico Granata "(%d)", error.get(), offset, value); 3049128ee2fSEnrico Granata return value; 3059128ee2fSEnrico Granata } 3069128ee2fSEnrico Granata 3079128ee2fSEnrico Granata uint64_t 308*c7bece56SGreg Clayton SBData::GetUnsignedInt64 (lldb::SBError& error, lldb::offset_t offset) 3099128ee2fSEnrico Granata { 3109128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3119128ee2fSEnrico Granata uint64_t value = 0; 3129128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3139128ee2fSEnrico Granata { 3149128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3159128ee2fSEnrico Granata } 3169128ee2fSEnrico Granata else 3179128ee2fSEnrico Granata { 3189128ee2fSEnrico Granata uint32_t old_offset = offset; 3199128ee2fSEnrico Granata value = m_opaque_sp->GetU64(&offset); 3209128ee2fSEnrico Granata if (offset == old_offset) 3219128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3229128ee2fSEnrico Granata } 3239128ee2fSEnrico Granata if (log) 324*c7bece56SGreg Clayton log->Printf ("SBData::GetUnsignedInt64 (error=%p,offset=%" PRIu64 ") => " 325d01b2953SDaniel Malea "(%" PRId64 ")", error.get(), offset, value); 3269128ee2fSEnrico Granata return value; 3279128ee2fSEnrico Granata } 3289128ee2fSEnrico Granata 3299128ee2fSEnrico Granata int8_t 330*c7bece56SGreg Clayton SBData::GetSignedInt8 (lldb::SBError& error, lldb::offset_t offset) 3319128ee2fSEnrico Granata { 3329128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3339128ee2fSEnrico Granata int8_t value = 0; 3349128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3359128ee2fSEnrico Granata { 3369128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3379128ee2fSEnrico Granata } 3389128ee2fSEnrico Granata else 3399128ee2fSEnrico Granata { 3409128ee2fSEnrico Granata uint32_t old_offset = offset; 3419128ee2fSEnrico Granata value = (int8_t)m_opaque_sp->GetMaxS64(&offset, 1); 3429128ee2fSEnrico Granata if (offset == old_offset) 3439128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3449128ee2fSEnrico Granata } 3459128ee2fSEnrico Granata if (log) 346*c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt8 (error=%p,offset=%" PRIu64 ") => " 3479128ee2fSEnrico Granata "(%c)", error.get(), offset, value); 3489128ee2fSEnrico Granata return value; 3499128ee2fSEnrico Granata } 3509128ee2fSEnrico Granata 3519128ee2fSEnrico Granata int16_t 352*c7bece56SGreg Clayton SBData::GetSignedInt16 (lldb::SBError& error, lldb::offset_t offset) 3539128ee2fSEnrico Granata { 3549128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3559128ee2fSEnrico Granata int16_t value = 0; 3569128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3579128ee2fSEnrico Granata { 3589128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3599128ee2fSEnrico Granata } 3609128ee2fSEnrico Granata else 3619128ee2fSEnrico Granata { 3629128ee2fSEnrico Granata uint32_t old_offset = offset; 3639128ee2fSEnrico Granata value = (int16_t)m_opaque_sp->GetMaxS64(&offset, 2); 3649128ee2fSEnrico Granata if (offset == old_offset) 3659128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3669128ee2fSEnrico Granata } 3679128ee2fSEnrico Granata if (log) 368*c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt16 (error=%p,offset=%" PRIu64 ") => " 3699128ee2fSEnrico Granata "(%hd)", error.get(), offset, value); 3709128ee2fSEnrico Granata return value; 3719128ee2fSEnrico Granata } 3729128ee2fSEnrico Granata 3739128ee2fSEnrico Granata int32_t 374*c7bece56SGreg Clayton SBData::GetSignedInt32 (lldb::SBError& error, lldb::offset_t offset) 3759128ee2fSEnrico Granata { 3769128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3779128ee2fSEnrico Granata int32_t value = 0; 3789128ee2fSEnrico Granata if (!m_opaque_sp.get()) 3799128ee2fSEnrico Granata { 3809128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 3819128ee2fSEnrico Granata } 3829128ee2fSEnrico Granata else 3839128ee2fSEnrico Granata { 3849128ee2fSEnrico Granata uint32_t old_offset = offset; 3859128ee2fSEnrico Granata value = (int32_t)m_opaque_sp->GetMaxS64(&offset, 4); 3869128ee2fSEnrico Granata if (offset == old_offset) 3879128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 3889128ee2fSEnrico Granata } 3899128ee2fSEnrico Granata if (log) 390*c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt32 (error=%p,offset=%" PRIu64 ") => " 3919128ee2fSEnrico Granata "(%d)", error.get(), offset, value); 3929128ee2fSEnrico Granata return value; 3939128ee2fSEnrico Granata } 3949128ee2fSEnrico Granata 3959128ee2fSEnrico Granata int64_t 396*c7bece56SGreg Clayton SBData::GetSignedInt64 (lldb::SBError& error, lldb::offset_t offset) 3979128ee2fSEnrico Granata { 3989128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 3999128ee2fSEnrico Granata int64_t value = 0; 4009128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4019128ee2fSEnrico Granata { 4029128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4039128ee2fSEnrico Granata } 4049128ee2fSEnrico Granata else 4059128ee2fSEnrico Granata { 4069128ee2fSEnrico Granata uint32_t old_offset = offset; 4079128ee2fSEnrico Granata value = (int64_t)m_opaque_sp->GetMaxS64(&offset, 8); 4089128ee2fSEnrico Granata if (offset == old_offset) 4099128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4109128ee2fSEnrico Granata } 4119128ee2fSEnrico Granata if (log) 412*c7bece56SGreg Clayton log->Printf ("SBData::GetSignedInt64 (error=%p,offset=%" PRIu64 ") => " 413d01b2953SDaniel Malea "(%" PRId64 ")", error.get(), offset, value); 4149128ee2fSEnrico Granata return value; 4159128ee2fSEnrico Granata } 4169128ee2fSEnrico Granata 4179128ee2fSEnrico Granata const char* 418*c7bece56SGreg Clayton SBData::GetString (lldb::SBError& error, lldb::offset_t offset) 4199128ee2fSEnrico Granata { 4209128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4219128ee2fSEnrico Granata const char* value = 0; 4229128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4239128ee2fSEnrico Granata { 4249128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4259128ee2fSEnrico Granata } 4269128ee2fSEnrico Granata else 4279128ee2fSEnrico Granata { 4289128ee2fSEnrico Granata uint32_t old_offset = offset; 4299128ee2fSEnrico Granata value = m_opaque_sp->GetCStr(&offset); 4309128ee2fSEnrico Granata if (offset == old_offset || (value == NULL)) 4319128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4329128ee2fSEnrico Granata } 4339128ee2fSEnrico Granata if (log) 434*c7bece56SGreg Clayton log->Printf ("SBData::GetString (error=%p,offset=%" PRIu64 ") => " 4359128ee2fSEnrico Granata "(%p)", error.get(), offset, value); 4369128ee2fSEnrico Granata return value; 4379128ee2fSEnrico Granata } 4389128ee2fSEnrico Granata 4399128ee2fSEnrico Granata bool 440d9dc52dcSGreg Clayton SBData::GetDescription (lldb::SBStream &description, lldb::addr_t base_addr) 4419128ee2fSEnrico Granata { 442da7bc7d0SGreg Clayton Stream &strm = description.ref(); 443da7bc7d0SGreg Clayton 4449128ee2fSEnrico Granata if (m_opaque_sp) 4459128ee2fSEnrico Granata { 446da7bc7d0SGreg Clayton m_opaque_sp->Dump (&strm, 4479128ee2fSEnrico Granata 0, 4489128ee2fSEnrico Granata lldb::eFormatBytesWithASCII, 4499128ee2fSEnrico Granata 1, 4509128ee2fSEnrico Granata m_opaque_sp->GetByteSize(), 4519128ee2fSEnrico Granata 16, 452d9dc52dcSGreg Clayton base_addr, 4539128ee2fSEnrico Granata 0, 4549128ee2fSEnrico Granata 0); 4559128ee2fSEnrico Granata } 4569128ee2fSEnrico Granata else 457da7bc7d0SGreg Clayton strm.PutCString ("No value"); 4589128ee2fSEnrico Granata 4599128ee2fSEnrico Granata return true; 4609128ee2fSEnrico Granata } 4619128ee2fSEnrico Granata 4629128ee2fSEnrico Granata size_t 4639128ee2fSEnrico Granata SBData::ReadRawData (lldb::SBError& error, 464*c7bece56SGreg Clayton lldb::offset_t offset, 4659128ee2fSEnrico Granata void *buf, 4669128ee2fSEnrico Granata size_t size) 4679128ee2fSEnrico Granata { 4689128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4699128ee2fSEnrico Granata void* ok = NULL; 4709128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4719128ee2fSEnrico Granata { 4729128ee2fSEnrico Granata error.SetErrorString("no value to read from"); 4739128ee2fSEnrico Granata } 4749128ee2fSEnrico Granata else 4759128ee2fSEnrico Granata { 4769128ee2fSEnrico Granata uint32_t old_offset = offset; 4779128ee2fSEnrico Granata ok = m_opaque_sp->GetU8(&offset, buf, size); 4789128ee2fSEnrico Granata if ((offset == old_offset) || (ok == NULL)) 4799128ee2fSEnrico Granata error.SetErrorString("unable to read data"); 4809128ee2fSEnrico Granata } 4819128ee2fSEnrico Granata if (log) 482*c7bece56SGreg Clayton log->Printf ("SBData::ReadRawData (error=%p,offset=%" PRIu64 ",buf=%p,size=%lu) => " 4839128ee2fSEnrico Granata "(%p)", error.get(), offset, buf, size, ok); 4849128ee2fSEnrico Granata return ok ? size : 0; 4859128ee2fSEnrico Granata } 4869128ee2fSEnrico Granata 4879128ee2fSEnrico Granata void 4889128ee2fSEnrico Granata SBData::SetData (lldb::SBError& error, 4899128ee2fSEnrico Granata const void *buf, 4909128ee2fSEnrico Granata size_t size, 4919128ee2fSEnrico Granata lldb::ByteOrder endian, 4929128ee2fSEnrico Granata uint8_t addr_size) 4939128ee2fSEnrico Granata { 4949128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 4959128ee2fSEnrico Granata if (!m_opaque_sp.get()) 4969128ee2fSEnrico Granata m_opaque_sp.reset(new DataExtractor(buf, size, endian, addr_size)); 4979128ee2fSEnrico Granata else 4989128ee2fSEnrico Granata m_opaque_sp->SetData(buf, size, endian); 4999128ee2fSEnrico Granata if (log) 500fd54b368SJason Molenda log->Printf ("SBData::SetData (error=%p,buf=%p,size=%lu,endian=%d,addr_size=%c) => " 5019128ee2fSEnrico Granata "(%p)", error.get(), buf, size, endian, addr_size, m_opaque_sp.get()); 5029128ee2fSEnrico Granata } 5039128ee2fSEnrico Granata 5049128ee2fSEnrico Granata bool 5059128ee2fSEnrico Granata SBData::Append (const SBData& rhs) 5069128ee2fSEnrico Granata { 5079128ee2fSEnrico Granata LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 5089128ee2fSEnrico Granata bool value = false; 5099128ee2fSEnrico Granata if (m_opaque_sp.get() && rhs.m_opaque_sp.get()) 5109128ee2fSEnrico Granata value = m_opaque_sp.get()->Append(*rhs.m_opaque_sp); 5119128ee2fSEnrico Granata if (log) 5129128ee2fSEnrico Granata log->Printf ("SBData::Append (rhs=%p) => " 5139128ee2fSEnrico Granata "(%s)", rhs.get(), value ? "true" : "false"); 5149128ee2fSEnrico Granata return value; 5159128ee2fSEnrico Granata } 5160f28986aSGreg Clayton 5170f28986aSGreg Clayton lldb::SBData 5180f28986aSGreg Clayton SBData::CreateDataFromCString (lldb::ByteOrder endian, uint32_t addr_byte_size, const char* data) 5190f28986aSGreg Clayton { 5200f28986aSGreg Clayton if (!data || !data[0]) 5210f28986aSGreg Clayton return SBData(); 5220f28986aSGreg Clayton 5230f28986aSGreg Clayton uint32_t data_len = strlen(data); 5240f28986aSGreg Clayton 5250f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 5260f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5270f28986aSGreg Clayton 5280f28986aSGreg Clayton SBData ret(data_sp); 5290f28986aSGreg Clayton 5300f28986aSGreg Clayton return ret; 5310f28986aSGreg Clayton } 5320f28986aSGreg Clayton 5330f28986aSGreg Clayton lldb::SBData 5340f28986aSGreg Clayton SBData::CreateDataFromUInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint64_t* array, size_t array_len) 5350f28986aSGreg Clayton { 5360f28986aSGreg Clayton if (!array || array_len == 0) 5370f28986aSGreg Clayton return SBData(); 5380f28986aSGreg Clayton 5390f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint64_t); 5400f28986aSGreg Clayton 5410f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5420f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5430f28986aSGreg Clayton 5440f28986aSGreg Clayton SBData ret(data_sp); 5450f28986aSGreg Clayton 5460f28986aSGreg Clayton return ret; 5470f28986aSGreg Clayton } 5480f28986aSGreg Clayton 5490f28986aSGreg Clayton lldb::SBData 5500f28986aSGreg Clayton SBData::CreateDataFromUInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint32_t* array, size_t array_len) 5510f28986aSGreg Clayton { 5520f28986aSGreg Clayton if (!array || array_len == 0) 5530f28986aSGreg Clayton return SBData(); 5540f28986aSGreg Clayton 5550f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint32_t); 5560f28986aSGreg Clayton 5570f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5580f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5590f28986aSGreg Clayton 5600f28986aSGreg Clayton SBData ret(data_sp); 5610f28986aSGreg Clayton 5620f28986aSGreg Clayton return ret; 5630f28986aSGreg Clayton } 5640f28986aSGreg Clayton 5650f28986aSGreg Clayton lldb::SBData 5660f28986aSGreg Clayton SBData::CreateDataFromSInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int64_t* array, size_t array_len) 5670f28986aSGreg Clayton { 5680f28986aSGreg Clayton if (!array || array_len == 0) 5690f28986aSGreg Clayton return SBData(); 5700f28986aSGreg Clayton 5710f28986aSGreg Clayton size_t data_len = array_len * sizeof(int64_t); 5720f28986aSGreg Clayton 5730f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5740f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5750f28986aSGreg Clayton 5760f28986aSGreg Clayton SBData ret(data_sp); 5770f28986aSGreg Clayton 5780f28986aSGreg Clayton return ret; 5790f28986aSGreg Clayton } 5800f28986aSGreg Clayton 5810f28986aSGreg Clayton lldb::SBData 5820f28986aSGreg Clayton SBData::CreateDataFromSInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int32_t* array, size_t array_len) 5830f28986aSGreg Clayton { 5840f28986aSGreg Clayton if (!array || array_len == 0) 5850f28986aSGreg Clayton return SBData(); 5860f28986aSGreg Clayton 5870f28986aSGreg Clayton size_t data_len = array_len * sizeof(int32_t); 5880f28986aSGreg Clayton 5890f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 5900f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 5910f28986aSGreg Clayton 5920f28986aSGreg Clayton SBData ret(data_sp); 5930f28986aSGreg Clayton 5940f28986aSGreg Clayton return ret; 5950f28986aSGreg Clayton } 5960f28986aSGreg Clayton 5970f28986aSGreg Clayton lldb::SBData 5980f28986aSGreg Clayton SBData::CreateDataFromDoubleArray (lldb::ByteOrder endian, uint32_t addr_byte_size, double* array, size_t array_len) 5990f28986aSGreg Clayton { 6000f28986aSGreg Clayton if (!array || array_len == 0) 6010f28986aSGreg Clayton return SBData(); 6020f28986aSGreg Clayton 6030f28986aSGreg Clayton size_t data_len = array_len * sizeof(double); 6040f28986aSGreg Clayton 6050f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6060f28986aSGreg Clayton lldb::DataExtractorSP data_sp(new DataExtractor(buffer_sp, endian, addr_byte_size)); 6070f28986aSGreg Clayton 6080f28986aSGreg Clayton SBData ret(data_sp); 6090f28986aSGreg Clayton 6100f28986aSGreg Clayton return ret; 6110f28986aSGreg Clayton } 6120f28986aSGreg Clayton 6130f28986aSGreg Clayton bool 6140f28986aSGreg Clayton SBData::SetDataFromCString (const char* data) 6150f28986aSGreg Clayton { 6160f28986aSGreg Clayton LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6170f28986aSGreg Clayton 6180f28986aSGreg Clayton if (!data) 6190f28986aSGreg Clayton { 6200f28986aSGreg Clayton if (log) 6210f28986aSGreg Clayton log->Printf ("SBData::SetDataFromCString (data=%p) => " 6220f28986aSGreg Clayton "false", data); 6230f28986aSGreg Clayton return false; 6240f28986aSGreg Clayton } 6250f28986aSGreg Clayton 6260f28986aSGreg Clayton size_t data_len = strlen(data); 6270f28986aSGreg Clayton 6280f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(data, data_len)); 6290f28986aSGreg Clayton 6300f28986aSGreg Clayton if (!m_opaque_sp.get()) 6310f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 6320f28986aSGreg Clayton else 6330f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6340f28986aSGreg Clayton 6350f28986aSGreg Clayton if (log) 6360f28986aSGreg Clayton log->Printf ("SBData::SetDataFromCString (data=%p) => " 6370f28986aSGreg Clayton "true", data); 6380f28986aSGreg Clayton 6390f28986aSGreg Clayton return true; 6400f28986aSGreg Clayton } 6410f28986aSGreg Clayton 6420f28986aSGreg Clayton bool 6430f28986aSGreg Clayton SBData::SetDataFromUInt64Array (uint64_t* array, size_t array_len) 6440f28986aSGreg Clayton { 6450f28986aSGreg Clayton LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6460f28986aSGreg Clayton 6470f28986aSGreg Clayton if (!array || array_len == 0) 6480f28986aSGreg Clayton { 6490f28986aSGreg Clayton if (log) 6500f28986aSGreg Clayton log->Printf ("SBData::SetDataFromUInt64Array (array=%p, array_len = %lu) => " 6510f28986aSGreg Clayton "false", array, array_len); 6520f28986aSGreg Clayton return false; 6530f28986aSGreg Clayton } 6540f28986aSGreg Clayton 6550f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint64_t); 6560f28986aSGreg Clayton 6570f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6580f28986aSGreg Clayton 6590f28986aSGreg Clayton if (!m_opaque_sp.get()) 6600f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 6610f28986aSGreg Clayton else 6620f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6630f28986aSGreg Clayton 6640f28986aSGreg Clayton if (log) 6650f28986aSGreg Clayton log->Printf ("SBData::SetDataFromUInt64Array (array=%p, array_len = %lu) => " 6660f28986aSGreg Clayton "true", array, array_len); 6670f28986aSGreg Clayton 6680f28986aSGreg Clayton return true; 6690f28986aSGreg Clayton } 6700f28986aSGreg Clayton 6710f28986aSGreg Clayton bool 6720f28986aSGreg Clayton SBData::SetDataFromUInt32Array (uint32_t* array, size_t array_len) 6730f28986aSGreg Clayton { 6740f28986aSGreg Clayton LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 6750f28986aSGreg Clayton 6760f28986aSGreg Clayton if (!array || array_len == 0) 6770f28986aSGreg Clayton { 6780f28986aSGreg Clayton if (log) 6790f28986aSGreg Clayton log->Printf ("SBData::SetDataFromUInt32Array (array=%p, array_len = %lu) => " 6800f28986aSGreg Clayton "false", array, array_len); 6810f28986aSGreg Clayton return false; 6820f28986aSGreg Clayton } 6830f28986aSGreg Clayton 6840f28986aSGreg Clayton size_t data_len = array_len * sizeof(uint32_t); 6850f28986aSGreg Clayton 6860f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 6870f28986aSGreg Clayton 6880f28986aSGreg Clayton if (!m_opaque_sp.get()) 6890f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 6900f28986aSGreg Clayton else 6910f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 6920f28986aSGreg Clayton 6930f28986aSGreg Clayton if (log) 6940f28986aSGreg Clayton log->Printf ("SBData::SetDataFromUInt32Array (array=%p, array_len = %lu) => " 6950f28986aSGreg Clayton "true", array, array_len); 6960f28986aSGreg Clayton 6970f28986aSGreg Clayton return true; 6980f28986aSGreg Clayton } 6990f28986aSGreg Clayton 7000f28986aSGreg Clayton bool 7010f28986aSGreg Clayton SBData::SetDataFromSInt64Array (int64_t* array, size_t array_len) 7020f28986aSGreg Clayton { 7030f28986aSGreg Clayton LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7040f28986aSGreg Clayton 7050f28986aSGreg Clayton if (!array || array_len == 0) 7060f28986aSGreg Clayton { 7070f28986aSGreg Clayton if (log) 7080f28986aSGreg Clayton log->Printf ("SBData::SetDataFromSInt64Array (array=%p, array_len = %lu) => " 7090f28986aSGreg Clayton "false", array, array_len); 7100f28986aSGreg Clayton return false; 7110f28986aSGreg Clayton } 7120f28986aSGreg Clayton 7130f28986aSGreg Clayton size_t data_len = array_len * sizeof(int64_t); 7140f28986aSGreg Clayton 7150f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7160f28986aSGreg Clayton 7170f28986aSGreg Clayton if (!m_opaque_sp.get()) 7180f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7190f28986aSGreg Clayton else 7200f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7210f28986aSGreg Clayton 7220f28986aSGreg Clayton if (log) 7230f28986aSGreg Clayton log->Printf ("SBData::SetDataFromSInt64Array (array=%p, array_len = %lu) => " 7240f28986aSGreg Clayton "true", array, array_len); 7250f28986aSGreg Clayton 7260f28986aSGreg Clayton return true; 7270f28986aSGreg Clayton } 7280f28986aSGreg Clayton 7290f28986aSGreg Clayton bool 7300f28986aSGreg Clayton SBData::SetDataFromSInt32Array (int32_t* array, size_t array_len) 7310f28986aSGreg Clayton { 7320f28986aSGreg Clayton LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7330f28986aSGreg Clayton 7340f28986aSGreg Clayton if (!array || array_len == 0) 7350f28986aSGreg Clayton { 7360f28986aSGreg Clayton if (log) 7370f28986aSGreg Clayton log->Printf ("SBData::SetDataFromSInt32Array (array=%p, array_len = %lu) => " 7380f28986aSGreg Clayton "false", array, array_len); 7390f28986aSGreg Clayton return false; 7400f28986aSGreg Clayton } 7410f28986aSGreg Clayton 7420f28986aSGreg Clayton size_t data_len = array_len * sizeof(int32_t); 7430f28986aSGreg Clayton 7440f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7450f28986aSGreg Clayton 7460f28986aSGreg Clayton if (!m_opaque_sp.get()) 7470f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7480f28986aSGreg Clayton else 7490f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7500f28986aSGreg Clayton 7510f28986aSGreg Clayton if (log) 7520f28986aSGreg Clayton log->Printf ("SBData::SetDataFromSInt32Array (array=%p, array_len = %lu) => " 7530f28986aSGreg Clayton "true", array, array_len); 7540f28986aSGreg Clayton 7550f28986aSGreg Clayton return true; 7560f28986aSGreg Clayton } 7570f28986aSGreg Clayton 7580f28986aSGreg Clayton bool 7590f28986aSGreg Clayton SBData::SetDataFromDoubleArray (double* array, size_t array_len) 7600f28986aSGreg Clayton { 7610f28986aSGreg Clayton LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API)); 7620f28986aSGreg Clayton 7630f28986aSGreg Clayton if (!array || array_len == 0) 7640f28986aSGreg Clayton { 7650f28986aSGreg Clayton if (log) 7660f28986aSGreg Clayton log->Printf ("SBData::SetDataFromDoubleArray (array=%p, array_len = %lu) => " 7670f28986aSGreg Clayton "false", array, array_len); 7680f28986aSGreg Clayton return false; 7690f28986aSGreg Clayton } 7700f28986aSGreg Clayton 7710f28986aSGreg Clayton size_t data_len = array_len * sizeof(double); 7720f28986aSGreg Clayton 7730f28986aSGreg Clayton lldb::DataBufferSP buffer_sp(new DataBufferHeap(array, data_len)); 7740f28986aSGreg Clayton 7750f28986aSGreg Clayton if (!m_opaque_sp.get()) 7760f28986aSGreg Clayton m_opaque_sp.reset(new DataExtractor(buffer_sp, GetByteOrder(), GetAddressByteSize())); 7770f28986aSGreg Clayton else 7780f28986aSGreg Clayton m_opaque_sp->SetData(buffer_sp); 7790f28986aSGreg Clayton 7800f28986aSGreg Clayton if (log) 7810f28986aSGreg Clayton log->Printf ("SBData::SetDataFromDoubleArray (array=%p, array_len = %lu) => " 7820f28986aSGreg Clayton "true", array, array_len); 7830f28986aSGreg Clayton 7840f28986aSGreg Clayton return true; 7850f28986aSGreg Clayton } 786