blob: d779cc66325aa32030ab28568977f5932c32c041 [file] [log] [blame]
Enrico Granata91544802011-09-06 19:20:51 +00001//===-- SWIG Interface for SBData -------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10
11namespace lldb {
12
13class SBData
14{
15public:
16
Johnny Chen6a388c92011-09-15 22:05:38 +000017 SBData ();
Enrico Granata91544802011-09-06 19:20:51 +000018
Johnny Chen6a388c92011-09-15 22:05:38 +000019 SBData (const SBData &rhs);
Enrico Granata91544802011-09-06 19:20:51 +000020
Johnny Chen6a388c92011-09-15 22:05:38 +000021 ~SBData ();
Enrico Granata91544802011-09-06 19:20:51 +000022
Johnny Chen6a388c92011-09-15 22:05:38 +000023 uint8_t
24 GetAddressByteSize ();
Greg Claytona6b7e322012-01-07 00:45:50 +000025
26 void
27 SetAddressByteSize (uint8_t addr_byte_size);
Enrico Granata91544802011-09-06 19:20:51 +000028
Johnny Chen6a388c92011-09-15 22:05:38 +000029 void
30 Clear ();
Enrico Granata91544802011-09-06 19:20:51 +000031
Johnny Chen6a388c92011-09-15 22:05:38 +000032 bool
33 IsValid();
Enrico Granata91544802011-09-06 19:20:51 +000034
Johnny Chen6a388c92011-09-15 22:05:38 +000035 size_t
36 GetByteSize ();
Enrico Granata91544802011-09-06 19:20:51 +000037
Johnny Chen6a388c92011-09-15 22:05:38 +000038 lldb::ByteOrder
39 GetByteOrder();
Greg Claytona6b7e322012-01-07 00:45:50 +000040
41 void
42 SetByteOrder (lldb::ByteOrder endian);
Enrico Granata91544802011-09-06 19:20:51 +000043
Johnny Chen6a388c92011-09-15 22:05:38 +000044 float
45 GetFloat (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000046
Johnny Chen6a388c92011-09-15 22:05:38 +000047 double
48 GetDouble (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000049
Johnny Chen6a388c92011-09-15 22:05:38 +000050 long double
51 GetLongDouble (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000052
Johnny Chen6a388c92011-09-15 22:05:38 +000053 lldb::addr_t
54 GetAddress (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000055
Johnny Chen6a388c92011-09-15 22:05:38 +000056 uint8_t
57 GetUnsignedInt8 (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000058
Johnny Chen6a388c92011-09-15 22:05:38 +000059 uint16_t
60 GetUnsignedInt16 (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000061
Johnny Chen6a388c92011-09-15 22:05:38 +000062 uint32_t
63 GetUnsignedInt32 (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000064
Johnny Chen6a388c92011-09-15 22:05:38 +000065 uint64_t
66 GetUnsignedInt64 (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000067
Johnny Chen6a388c92011-09-15 22:05:38 +000068 int8_t
69 GetSignedInt8 (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000070
Johnny Chen6a388c92011-09-15 22:05:38 +000071 int16_t
72 GetSignedInt16 (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000073
Johnny Chen6a388c92011-09-15 22:05:38 +000074 int32_t
75 GetSignedInt32 (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000076
Johnny Chen6a388c92011-09-15 22:05:38 +000077 int64_t
78 GetSignedInt64 (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000079
Johnny Chen6a388c92011-09-15 22:05:38 +000080 const char*
81 GetString (lldb::SBError& error, uint32_t offset);
Enrico Granata91544802011-09-06 19:20:51 +000082
Johnny Chen6a388c92011-09-15 22:05:38 +000083 bool
Greg Clayton15ef51e2011-09-24 05:04:40 +000084 GetDescription (lldb::SBStream &description, lldb::addr_t base_addr);
Enrico Granata91544802011-09-06 19:20:51 +000085
Johnny Chen6a388c92011-09-15 22:05:38 +000086 size_t
87 ReadRawData (lldb::SBError& error,
88 uint32_t offset,
89 void *buf,
90 size_t size);
Enrico Granata91544802011-09-06 19:20:51 +000091
Johnny Chen6a388c92011-09-15 22:05:38 +000092 void
Greg Claytona6b7e322012-01-07 00:45:50 +000093 SetData (lldb::SBError& error, const void *buf, size_t size, lldb::ByteOrder endian, uint8_t addr_size);
Johnny Chen6a388c92011-09-15 22:05:38 +000094
95 bool
Greg Claytona6b7e322012-01-07 00:45:50 +000096 Append (const SBData& rhs);
97
98 static lldb::SBData
99 CreateDataFromCString (lldb::ByteOrder endian, uint32_t addr_byte_size, const char* data);
100
101 // in the following CreateData*() and SetData*() prototypes, the two parameters array and array_len
102 // should not be renamed or rearranged, because doing so will break the SWIG typemap
103 static lldb::SBData
104 CreateDataFromUInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint64_t* array, size_t array_len);
105
106 static lldb::SBData
107 CreateDataFromUInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, uint32_t* array, size_t array_len);
108
109 static lldb::SBData
110 CreateDataFromSInt64Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int64_t* array, size_t array_len);
111
112 static lldb::SBData
113 CreateDataFromSInt32Array (lldb::ByteOrder endian, uint32_t addr_byte_size, int32_t* array, size_t array_len);
114
115 static lldb::SBData
116 CreateDataFromDoubleArray (lldb::ByteOrder endian, uint32_t addr_byte_size, double* array, size_t array_len);
117
118 bool
119 SetDataFromCString (const char* data);
120
121 bool
122 SetDataFromUInt64Array (uint64_t* array, size_t array_len);
123
124 bool
125 SetDataFromUInt32Array (uint32_t* array, size_t array_len);
126
127 bool
128 SetDataFromSInt64Array (int64_t* array, size_t array_len);
129
130 bool
131 SetDataFromSInt32Array (int32_t* array, size_t array_len);
132
133 bool
134 SetDataFromDoubleArray (double* array, size_t array_len);
Enrico Granata91544802011-09-06 19:20:51 +0000135
Greg Clayton1b925202012-01-29 06:07:39 +0000136 %pythoncode %{
137 __swig_getmethods__["byte_order"] = GetByteOrder
138 __swig_setmethods__["byte_order"] = SetByteOrder
139 if _newclass: x = property(GetByteOrder, SetByteOrder)
140
141 __swig_getmethods__["size"] = GetByteSize
142 if _newclass: x = property(GetByteSize, None)
143
144 %}
145
Enrico Granata91544802011-09-06 19:20:51 +0000146};
147
148} // namespace lldb