clang 20.0.0 (based on r547379) from build 12806354. Bug: http://b/379133546 Test: N/A Change-Id: I2eb8938af55d809de674be63cb30cf27e801862b Upstream-Commit: ad834e67b1105d15ef907f6255d4c96e8e733f57
165 lines
5.5 KiB
C++
165 lines
5.5 KiB
C++
//===-- SBData.h -----------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_API_SBDATA_H
|
|
#define LLDB_API_SBDATA_H
|
|
|
|
#include "lldb/API/SBDefines.h"
|
|
|
|
namespace lldb_private {
|
|
class ScriptInterpreter;
|
|
} // namespace lldb_private
|
|
|
|
namespace lldb {
|
|
|
|
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();
|
|
|
|
explicit operator bool() const;
|
|
|
|
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);
|
|
|
|
void SetDataWithOwnership(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);
|
|
|
|
private:
|
|
friend class SBInstruction;
|
|
friend class SBProcess;
|
|
friend class SBSection;
|
|
friend class SBTarget;
|
|
friend class SBValue;
|
|
|
|
friend class lldb_private::ScriptInterpreter;
|
|
|
|
lldb::DataExtractorSP m_opaque_sp;
|
|
};
|
|
|
|
} // namespace lldb
|
|
|
|
#endif // LLDB_API_SBDATA_H
|