summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Devlieghere <jonas@devlieghere.com>2020-01-08 13:34:55 -0800
committerJonas Devlieghere <jonas@devlieghere.com>2020-01-08 13:37:07 -0800
commit0341c11e08504acef8c16ab07210bc253dadf2d9 (patch)
treea49c8fd69f16d9cc8aa6cd6558f8778fdb54fbe6
parent0b8ce37d64747ba7d8908626256e2b5e58f7b396 (diff)
downloadbcm5719-llvm-0341c11e08504acef8c16ab07210bc253dadf2d9.tar.gz
bcm5719-llvm-0341c11e08504acef8c16ab07210bc253dadf2d9.zip
[lldb/SWIG] Refactor extensions to be non Python-specific
The current SWIG extensions for the string conversion operator is Python specific because it uses the PythonObjects. This means that the code cannot be reused for other SWIG supported languages such as Lua. This reimplements the extensions in a more generic way that can be reused. Differential revision: https://reviews.llvm.org/D72377
-rw-r--r--lldb/scripts/Python/python-extensions.swig13
-rw-r--r--lldb/scripts/interface/SBTarget.i17
-rw-r--r--lldb/scripts/lldb.swig1
-rw-r--r--lldb/scripts/lldb_lua.swig1
4 files changed, 18 insertions, 14 deletions
diff --git a/lldb/scripts/Python/python-extensions.swig b/lldb/scripts/Python/python-extensions.swig
index c10c32b4487..dbd4b1d79d0 100644
--- a/lldb/scripts/Python/python-extensions.swig
+++ b/lldb/scripts/Python/python-extensions.swig
@@ -1,4 +1,3 @@
-
%extend lldb::SBAddress {
%nothreadallow;
PyObject *lldb::SBAddress::__str__ (){
@@ -502,18 +501,6 @@
}
%extend lldb::SBTarget {
- %nothreadallow;
- PyObject *lldb::SBTarget::__str__ (){
- lldb::SBStream description;
- $self->GetDescription (description, lldb::eDescriptionLevelBrief);
- const char *desc = description.GetData();
- size_t desc_len = description.GetSize();
- if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
- --desc_len;
- return PythonString(llvm::StringRef(desc, desc_len)).release();
- }
- %clearnothreadallow;
-
%pythoncode %{
def __eq__(self, rhs):
if not isinstance(rhs, type(self)):
diff --git a/lldb/scripts/interface/SBTarget.i b/lldb/scripts/interface/SBTarget.i
index b31622889e5..02c70b6e1cd 100644
--- a/lldb/scripts/interface/SBTarget.i
+++ b/lldb/scripts/interface/SBTarget.i
@@ -8,7 +8,6 @@
namespace lldb {
-
%feature("docstring",
"Represents the target program running under the debugger.
@@ -968,6 +967,22 @@ public:
lldb::SBValue
EvaluateExpression (const char *expr, const lldb::SBExpressionOptions &options);
+ %extend {
+ %nothreadallow;
+ std::string lldb::SBTarget::__str__(){
+ lldb::SBStream stream;
+ $self->GetDescription (stream, lldb::eDescriptionLevelBrief);
+
+ const char *desc = stream.GetData();
+ size_t desc_len = stream.GetSize();
+ if (desc_len > 0 && (desc[desc_len-1] == '\n' || desc[desc_len-1] == '\r'))
+ --desc_len;
+
+ return std::string(desc, desc_len);
+ }
+ %clearnothreadallow;
+ }
+
#ifdef SWIGPYTHON
%pythoncode %{
class modules_access(object):
diff --git a/lldb/scripts/lldb.swig b/lldb/scripts/lldb.swig
index f030116b6cb..c3b90833274 100644
--- a/lldb/scripts/lldb.swig
+++ b/lldb/scripts/lldb.swig
@@ -93,6 +93,7 @@ def lldb_iter(obj, getsize, getelem):
yield elem(i)
%}
+%include <std_string.i>
%include "./Python/python-typemaps.swig"
%include "./headers.swig"
diff --git a/lldb/scripts/lldb_lua.swig b/lldb/scripts/lldb_lua.swig
index 85edefff76f..bf8809015d9 100644
--- a/lldb/scripts/lldb_lua.swig
+++ b/lldb/scripts/lldb_lua.swig
@@ -8,6 +8,7 @@
%module lldb
+%include <std_string.i>
%include "./headers.swig"
%{
OpenPOWER on IntegriCloud