Skip to content
Snippets Groups Projects
Commit e84097f4 authored by Enric Tejedor Saavedra's avatar Enric Tejedor Saavedra
Browse files

[Exp PyROOT] Implement and test converter for TString&

parent 649cdaba
No related branches found
No related tags found
No related merge requests found
...@@ -31,6 +31,13 @@ class TStringConverter(unittest.TestCase): ...@@ -31,6 +31,13 @@ class TStringConverter(unittest.TestCase):
self.check_type_conversion() self.check_type_conversion()
def test_by_reference(self): def test_by_reference(self):
ROOT.gInterpreter.Declare("""
const char* myfun(TString &s) { return s.Data(); }
""")
self.check_type_conversion()
def test_by_const_reference(self):
ROOT.gInterpreter.Declare(""" ROOT.gInterpreter.Declare("""
const char* myfun(const TString &s) { return s.Data(); } const char* myfun(const TString &s) { return s.Data(); }
""") """)
......
...@@ -2070,6 +2070,7 @@ public: ...@@ -2070,6 +2070,7 @@ public:
// factories for special cases // factories for special cases
gf["TString"] = (cf_t)+[](long) { return new TStringConverter{}; }; gf["TString"] = (cf_t)+[](long) { return new TStringConverter{}; };
gf["TString&"] = (cf_t)+[](long) { return new TStringConverter{}; };
gf["const TString&"] = (cf_t)+[](long) { return new TStringConverter{}; }; gf["const TString&"] = (cf_t)+[](long) { return new TStringConverter{}; };
gf["const char*"] = (cf_t)+[](long) { return new CStringConverter{}; }; gf["const char*"] = (cf_t)+[](long) { return new CStringConverter{}; };
gf["const char[]"] = (cf_t)+[](long) { return new CStringConverter{}; }; gf["const char[]"] = (cf_t)+[](long) { return new CStringConverter{}; };
......
diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx diff --git a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx
index a470a41..e1b4961 100644 index a470a41..56d486d 100644
--- a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx --- a/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx
+++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx +++ b/bindings/pyroot_experimental/cppyy/CPyCppyy/src/Converters.cxx
@@ -1026,6 +1026,7 @@ bool CPyCppyy::name##Converter::ToMemory(PyObject* value, void* address) \ @@ -1026,6 +1026,7 @@ bool CPyCppyy::name##Converter::ToMemory(PyObject* value, void* address) \
...@@ -10,11 +10,12 @@ index a470a41..e1b4961 100644 ...@@ -10,11 +10,12 @@ index a470a41..e1b4961 100644
CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER(STLString, std::string, c_str, size) CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER(STLString, std::string, c_str, size)
CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER(STLStringViewBase, std::string_view, data, size) CPPYY_IMPL_STRING_AS_PRIMITIVE_CONVERTER(STLStringViewBase, std::string_view, data, size)
bool CPyCppyy::STLStringViewConverter::SetArg( bool CPyCppyy::STLStringViewConverter::SetArg(
@@ -2068,6 +2069,8 @@ public: @@ -2068,6 +2069,9 @@ public:
gf["const ULong64_t&"] = gf["const unsigned long long&"]; gf["const ULong64_t&"] = gf["const unsigned long long&"];
// factories for special cases // factories for special cases
+ gf["TString"] = (cf_t)+[](long) { return new TStringConverter{}; }; + gf["TString"] = (cf_t)+[](long) { return new TStringConverter{}; };
+ gf["TString&"] = (cf_t)+[](long) { return new TStringConverter{}; };
+ gf["const TString&"] = (cf_t)+[](long) { return new TStringConverter{}; }; + gf["const TString&"] = (cf_t)+[](long) { return new TStringConverter{}; };
gf["const char*"] = (cf_t)+[](long) { return new CStringConverter{}; }; gf["const char*"] = (cf_t)+[](long) { return new CStringConverter{}; };
gf["const char[]"] = (cf_t)+[](long) { return new CStringConverter{}; }; gf["const char[]"] = (cf_t)+[](long) { return new CStringConverter{}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment