SBData.h revision 15ef51e3bd8229d3779f96e08b25b26182c91c6c
1915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata//===-- SBData.h -----------------------------------------------*- C++ -*-===// 2915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// 3915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// The LLVM Compiler Infrastructure 4915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// 5915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// This file is distributed under the University of Illinois Open Source 6915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// License. See LICENSE.TXT for details. 7915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata// 8915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata//===----------------------------------------------------------------------===// 9915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 10915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#ifndef LLDB_SBData_h_ 11915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#define LLDB_SBData_h_ 12915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 13915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#include "lldb/API/SBDefines.h" 14915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 15915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatanamespace lldb { 16915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 17915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataclass SBData 18915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata{ 19915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granatapublic: 20915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 21915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata SBData (); 22915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 23915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata SBData (const SBData &rhs); 24915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 25915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#ifndef SWIG 26915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata const SBData & 27915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata operator = (const SBData &rhs); 28915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#endif 29915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 30915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata ~SBData (); 31915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 32915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint8_t 33915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetAddressByteSize (); 34915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 35915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata void 36915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata Clear (); 37915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 38915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata bool 39915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata IsValid(); 40915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 41915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata size_t 42915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetByteSize (); 43915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 44915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata lldb::ByteOrder 45915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetByteOrder(); 46915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 47915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata float 48915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetFloat (lldb::SBError& error, uint32_t offset); 49915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 50915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata double 51915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetDouble (lldb::SBError& error, uint32_t offset); 52915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 53915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata long double 54915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetLongDouble (lldb::SBError& error, uint32_t offset); 55915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 56915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata lldb::addr_t 57915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetAddress (lldb::SBError& error, uint32_t offset); 58915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 59915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint8_t 60915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetUnsignedInt8 (lldb::SBError& error, uint32_t offset); 61915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 62915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint16_t 63915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetUnsignedInt16 (lldb::SBError& error, uint32_t offset); 64915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 65915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t 66915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetUnsignedInt32 (lldb::SBError& error, uint32_t offset); 67915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 68915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint64_t 69915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetUnsignedInt64 (lldb::SBError& error, uint32_t offset); 70915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 71915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata int8_t 72915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetSignedInt8 (lldb::SBError& error, uint32_t offset); 73915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 74915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata int16_t 75915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetSignedInt16 (lldb::SBError& error, uint32_t offset); 76915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 77915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata int32_t 78915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetSignedInt32 (lldb::SBError& error, uint32_t offset); 79915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 80915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata int64_t 81915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetSignedInt64 (lldb::SBError& error, uint32_t offset); 82915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 83915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata const char* 84915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata GetString (lldb::SBError& error, uint32_t offset); 85915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 86915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata size_t 87915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata ReadRawData (lldb::SBError& error, 88915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata uint32_t offset, 89915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata void *buf, 90915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata size_t size); 91915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 92915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata bool 9315ef51e3bd8229d3779f96e08b25b26182c91c6cGreg Clayton GetDescription (lldb::SBStream &description, lldb::addr_t base_addr = LLDB_INVALID_ADDRESS); 94915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 95915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata // it would be nice to have SetData(SBError, const void*, size_t) when endianness and address size can be 96915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata // inferred from the existing DataExtractor, but having two SetData() signatures triggers a SWIG bug where 97915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata // the typemap isn't applied before resolving the overload, and thus the right function never gets called 98915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata void 99915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata SetData(lldb::SBError& error, const void *buf, size_t size, lldb::ByteOrder endian, uint8_t addr_size); 100915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 101915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata // see SetData() for why we don't have Append(const void* buf, size_t size) 102915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata bool 103915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata Append(const SBData& rhs); 104915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 105915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataprotected: 106915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 107915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#ifndef SWIG 108915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata // Mimic shared pointer... 109915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata lldb_private::DataExtractor * 110915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata get() const; 111915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 112915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata lldb_private::DataExtractor * 113915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata operator->() const; 114915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 115915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata lldb::DataExtractorSP & 116915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata operator*(); 117915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 118915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata const lldb::DataExtractorSP & 119915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata operator*() const; 120915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#endif 121915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 122915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata SBData (const lldb::DataExtractorSP &data_sp); 123915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 124915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata void 125915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata SetOpaque (const lldb::DataExtractorSP &data_sp); 126915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 127915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granataprivate: 128915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata friend class SBValue; 1293e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton friend class SBSection; 1303e8c25f62f92145b6fb699b379cbfe72b1245d4aGreg Clayton 131915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata lldb::DataExtractorSP m_opaque_sp; 132915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata}; 133915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 134915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 135915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata} // namespace lldb 136915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata 137915448044bac6fdac22a33cc46697dcb771a8df2Enrico Granata#endif // LLDB_SBData_h_ 138