Add shared_ptr typecheck typemaps for Python and add overloaded method tests for shared_ptr

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10251 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2008-02-13 23:10:58 +00:00
commit 444f643c4e
3 changed files with 93 additions and 20 deletions

View file

@ -219,6 +219,33 @@ const SwigBoost::shared_ptr<Klass>& ref_1() {
return sptr;
}
// overloading tests
std::string overload_rawbyval(int i) { return "int"; }
std::string overload_rawbyval(Klass k) { return "rawbyval"; }
std::string overload_rawbyref(int i) { return "int"; }
std::string overload_rawbyref(Klass &k) { return "rawbyref"; }
std::string overload_rawbyptr(int i) { return "int"; }
std::string overload_rawbyptr(Klass *k) { return "rawbyptr"; }
std::string overload_rawbyptrref(int i) { return "int"; }
std::string overload_rawbyptrref(Klass *&k) { return "rawbyptrref"; }
std::string overload_smartbyval(int i) { return "int"; }
std::string overload_smartbyval(SwigBoost::shared_ptr<Klass> k) { return "smartbyval"; }
std::string overload_smartbyref(int i) { return "int"; }
std::string overload_smartbyref(SwigBoost::shared_ptr<Klass> &k) { return "smartbyref"; }
std::string overload_smartbyptr(int i) { return "int"; }
std::string overload_smartbyptr(SwigBoost::shared_ptr<Klass> *k) { return "smartbyptr"; }
std::string overload_smartbyptrref(int i) { return "int"; }
std::string overload_smartbyptrref(SwigBoost::shared_ptr<Klass> *&k) { return "smartbyptrref"; }
} // namespace Space
%}

View file

@ -277,6 +277,30 @@ class li_boost_shared_ptr_runme:
self.verifyCount(1, k)
self.verifyCount(1, kret)
# //////////////////////////////// Overloading tests ////////////////////////////////////////
# Base class
k = li_boost_shared_ptr.Klass("me oh my")
self.verifyValue(li_boost_shared_ptr.overload_rawbyval(k), "rawbyval");
self.verifyValue(li_boost_shared_ptr.overload_rawbyref(k), "rawbyref");
self.verifyValue(li_boost_shared_ptr.overload_rawbyptr(k), "rawbyptr");
self.verifyValue(li_boost_shared_ptr.overload_rawbyptrref(k), "rawbyptrref");
self.verifyValue(li_boost_shared_ptr.overload_smartbyval(k), "smartbyval");
self.verifyValue(li_boost_shared_ptr.overload_smartbyref(k), "smartbyref");
self.verifyValue(li_boost_shared_ptr.overload_smartbyptr(k), "smartbyptr");
self.verifyValue(li_boost_shared_ptr.overload_smartbyptrref(k), "smartbyptrref");
# Derived class
k = li_boost_shared_ptr.KlassDerived("me oh my")
self.verifyValue(li_boost_shared_ptr.overload_rawbyval(k), "rawbyval");
self.verifyValue(li_boost_shared_ptr.overload_rawbyref(k), "rawbyref");
self.verifyValue(li_boost_shared_ptr.overload_rawbyptr(k), "rawbyptr");
self.verifyValue(li_boost_shared_ptr.overload_rawbyptrref(k), "rawbyptrref");
self.verifyValue(li_boost_shared_ptr.overload_smartbyval(k), "smartbyval");
self.verifyValue(li_boost_shared_ptr.overload_smartbyref(k), "smartbyref");
self.verifyValue(li_boost_shared_ptr.overload_smartbyptr(k), "smartbyptr");
self.verifyValue(li_boost_shared_ptr.overload_smartbyptrref(k), "smartbyptrref");
def verifyValue(self, expected, got):
if (expected != got):