diff options
Diffstat (limited to 'include/lldb/API/SBData.h')
-rw-r--r-- | include/lldb/API/SBData.h | 283 |
1 files changed, 129 insertions, 154 deletions
diff --git a/include/lldb/API/SBData.h b/include/lldb/API/SBData.h index a2bd72fad570..7aa4ea0ff8d0 100644 --- a/include/lldb/API/SBData.h +++ b/include/lldb/API/SBData.h @@ -14,168 +14,143 @@ namespace lldb { -class LLDB_API SBData -{ +class LLDB_API SBData { public: + SBData(); + + SBData(const SBData &rhs); + + const SBData &operator=(const SBData &rhs); + + ~SBData(); + + uint8_t GetAddressByteSize(); + + void SetAddressByteSize(uint8_t addr_byte_size); + + void Clear(); + + bool IsValid(); + + size_t GetByteSize(); + + lldb::ByteOrder GetByteOrder(); + + void SetByteOrder(lldb::ByteOrder endian); + + float GetFloat(lldb::SBError &error, lldb::offset_t offset); + + double GetDouble(lldb::SBError &error, lldb::offset_t offset); + + long double GetLongDouble(lldb::SBError &error, lldb::offset_t offset); + + lldb::addr_t GetAddress(lldb::SBError &error, lldb::offset_t offset); + + uint8_t GetUnsignedInt8(lldb::SBError &error, lldb::offset_t offset); + + uint16_t GetUnsignedInt16(lldb::SBError &error, lldb::offset_t offset); + + uint32_t GetUnsignedInt32(lldb::SBError &error, lldb::offset_t offset); + + uint64_t GetUnsignedInt64(lldb::SBError &error, lldb::offset_t offset); + + int8_t GetSignedInt8(lldb::SBError &error, lldb::offset_t offset); + + int16_t GetSignedInt16(lldb::SBError &error, lldb::offset_t offset); + + int32_t GetSignedInt32(lldb::SBError &error, lldb::offset_t offset); + + int64_t GetSignedInt64(lldb::SBError &error, lldb::offset_t offset); + + const char *GetString(lldb::SBError &error, lldb::offset_t offset); + + size_t ReadRawData(lldb::SBError &error, lldb::offset_t offset, void *buf, + size_t size); + + bool GetDescription(lldb::SBStream &description, + lldb::addr_t base_addr = LLDB_INVALID_ADDRESS); + + // it would be nice to have SetData(SBError, const void*, size_t) when + // endianness and address size can be + // inferred from the existing DataExtractor, but having two SetData() + // signatures triggers a SWIG bug where + // the typemap isn't applied before resolving the overload, and thus the right + // function never gets called + void SetData(lldb::SBError &error, const void *buf, size_t size, + lldb::ByteOrder endian, uint8_t addr_size); + + // see SetData() for why we don't have Append(const void* buf, size_t size) + bool Append(const SBData &rhs); + + static lldb::SBData CreateDataFromCString(lldb::ByteOrder endian, + uint32_t addr_byte_size, + const char *data); + + // in the following CreateData*() and SetData*() prototypes, the two + // parameters array and array_len + // should not be renamed or rearranged, because doing so will break the SWIG + // typemap + static lldb::SBData CreateDataFromUInt64Array(lldb::ByteOrder endian, + uint32_t addr_byte_size, + uint64_t *array, + size_t array_len); + + static lldb::SBData CreateDataFromUInt32Array(lldb::ByteOrder endian, + uint32_t addr_byte_size, + uint32_t *array, + size_t array_len); + + static lldb::SBData CreateDataFromSInt64Array(lldb::ByteOrder endian, + uint32_t addr_byte_size, + int64_t *array, + size_t array_len); + + static lldb::SBData CreateDataFromSInt32Array(lldb::ByteOrder endian, + uint32_t addr_byte_size, + int32_t *array, + size_t array_len); + + static lldb::SBData CreateDataFromDoubleArray(lldb::ByteOrder endian, + uint32_t addr_byte_size, + double *array, + size_t array_len); + + bool SetDataFromCString(const char *data); + + bool SetDataFromUInt64Array(uint64_t *array, size_t array_len); + + bool SetDataFromUInt32Array(uint32_t *array, size_t array_len); + + bool SetDataFromSInt64Array(int64_t *array, size_t array_len); + + bool SetDataFromSInt32Array(int32_t *array, size_t array_len); + + bool SetDataFromDoubleArray(double *array, size_t array_len); - SBData (); - - SBData (const SBData &rhs); - - const SBData & - operator = (const SBData &rhs); - - ~SBData (); - - uint8_t - GetAddressByteSize (); - - void - SetAddressByteSize (uint8_t addr_byte_size); - - void - Clear (); - - bool - IsValid(); - - size_t - GetByteSize (); - - lldb::ByteOrder - GetByteOrder(); - - void - SetByteOrder (lldb::ByteOrder endian); - - float - GetFloat (lldb::SBError& error, lldb::offset_t offset); - - double - GetDouble (lldb::SBError& error, lldb::offset_t offset); - - long double - GetLongDouble (lldb::SBError& error, lldb::offset_t offset); - - lldb::addr_t - GetAddress (lldb::SBError& error, lldb::offset_t offset); - - uint8_t - GetUnsignedInt8 (lldb::SBError& error, lldb::offset_t offset); - - uint16_t - GetUnsignedInt16 (lldb::SBError& error, lldb::offset_t offset); - - uint32_t - GetUnsignedInt32 (lldb::SBError& error, lldb::offset_t offset); - - uint64_t - GetUnsignedInt64 (lldb::SBError& error, lldb::offset_t offset); - - int8_t - GetSignedInt8 (lldb::SBError& error, lldb::offset_t offset); - - int16_t - GetSignedInt16 (lldb::SBError& error, lldb::offset_t offset); - - int32_t - GetSignedInt32 (lldb::SBError& error, lldb::offset_t offset); - - int64_t - GetSignedInt64 (lldb::SBError& error, lldb::offset_t offset); - - const char* - GetString (lldb::SBError& error, lldb::offset_t offset); - - size_t - ReadRawData (lldb::SBError& error, - lldb::offset_t offset, - void *buf, - size_t size); - - bool - GetDescription (lldb::SBStream &description, lldb::addr_t base_addr = LLDB_INVALID_ADDRESS); - - // it would be nice to have SetData(SBError, const void*, size_t) when endianness and address size can be - // inferred from the existing DataExtractor, but having two SetData() signatures triggers a SWIG bug where - // the typemap isn't applied before resolving the overload, and thus the right function never gets called - void - SetData (lldb::SBError& error, const void *buf, size_t size, lldb::ByteOrder endian, uint8_t addr_size); - - // see SetData() for why we don't have Append(const void* buf, size_t size) - bool - Append (const SBData& rhs); - - static lldb::SBData - CreateDataFromCString (lldb::ByteOrder endian, uint32_t addr_byte_size, const char* data); - - // in the following CreateData*() and SetData*() prototypes, the two parameters array and array_len - // should not be renamed or rearranged, because doing so will break the SWIG typemap - static lldb::SBData - CreateDataFromUInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint64_t* array, size_t array_len); - - static lldb::SBData - CreateDataFromUInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint32_t* array, size_t array_len); - - static lldb::SBData - CreateDataFromSInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int64_t* array, size_t array_len); - - static lldb::SBData - CreateDataFromSInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int32_t* array, size_t array_len); - - static lldb::SBData - CreateDataFromDoubleArray (lldb::ByteOrder endian, uint32_t addr_byte_size, double* array, size_t array_len); - - bool - SetDataFromCString (const char* data); - - bool - SetDataFromUInt64Array (uint64_t* array, size_t array_len); - - bool - SetDataFromUInt32Array (uint32_t* array, size_t array_len); - - bool - SetDataFromSInt64Array (int64_t* array, size_t array_len); - - bool - SetDataFromSInt32Array (int32_t* array, size_t array_len); - - bool - SetDataFromDoubleArray (double* array, size_t array_len); - - protected: - - // Mimic shared pointer... - lldb_private::DataExtractor * - get() const; - - lldb_private::DataExtractor * - operator->() const; - - lldb::DataExtractorSP & - operator*(); - - const lldb::DataExtractorSP & - operator*() const; - - SBData (const lldb::DataExtractorSP &data_sp); - - void - SetOpaque (const lldb::DataExtractorSP &data_sp); + // Mimic shared pointer... + lldb_private::DataExtractor *get() const; + + lldb_private::DataExtractor *operator->() const; + + lldb::DataExtractorSP &operator*(); + + const lldb::DataExtractorSP &operator*() const; + + SBData(const lldb::DataExtractorSP &data_sp); + + void SetOpaque(const lldb::DataExtractorSP &data_sp); private: - friend class SBInstruction; - friend class SBProcess; - friend class SBSection; - friend class SBTarget; - friend class SBValue; + friend class SBInstruction; + friend class SBProcess; + friend class SBSection; + friend class SBTarget; + friend class SBValue; - lldb::DataExtractorSP m_opaque_sp; + lldb::DataExtractorSP m_opaque_sp; }; - } // namespace lldb #endif // LLDB_SBData_h_ |